added houses

This commit is contained in:
Tom Gardham-Pallister
2017-02-02 08:00:37 +00:00
parent 074ae4d609
commit 37aaeeed82
8 changed files with 229 additions and 7 deletions

View File

@ -23,6 +23,8 @@
DownstreamSchemeNullOrEmptyError,
DownstreamHostNullOrEmptyError,
ServicesAreNullError,
ServicesAreEmptyError
ServicesAreEmptyError,
UnableToFindServiceProviderError,
UnableToFindLoadBalancerError
}
}

View File

@ -6,7 +6,7 @@ using Ocelot.Responses;
namespace Ocelot.LoadBalancer.LoadBalancers
{
public class LoadBalancerHouse
public class LoadBalancerHouse : ILoadBalancerHouse
{
private readonly Dictionary<string, ILoadBalancer> _loadBalancers;
@ -17,7 +17,17 @@ namespace Ocelot.LoadBalancer.LoadBalancers
public Response<ILoadBalancer> Get(string key)
{
return new OkResponse<ILoadBalancer>(_loadBalancers[key]);
ILoadBalancer loadBalancer;
if(_loadBalancers.TryGetValue(key, out loadBalancer))
{
return new OkResponse<ILoadBalancer>(_loadBalancers[key]);
}
return new ErrorResponse<ILoadBalancer>(new List<Ocelot.Errors.Error>()
{
new UnableToFindLoadBalancerError($"unabe to find load balancer for {key}")
});
}
public Response Add(string key, ILoadBalancer loadBalancer)

View File

@ -0,0 +1,12 @@
using Ocelot.Errors;
namespace Ocelot.LoadBalancer.LoadBalancers
{
public class UnableToFindLoadBalancerError : Errors.Error
{
public UnableToFindLoadBalancerError(string message)
: base(message, OcelotErrorCode.UnableToFindLoadBalancerError)
{
}
}
}

View File

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using Ocelot.Responses;
namespace Ocelot.ServiceDiscovery
{
public interface IServiceProviderHouse
{
Response<IServiceProvider> Get(string key);
Response Add(string key, IServiceProvider serviceProvider);
}
}

View File

@ -0,0 +1,34 @@
using System.Collections.Generic;
using Ocelot.Responses;
namespace Ocelot.ServiceDiscovery
{
public class ServiceProviderHouse : IServiceProviderHouse
{
private Dictionary<string, Ocelot.ServiceDiscovery.IServiceProvider> _serviceProviders;
public ServiceProviderHouse()
{
_serviceProviders = new Dictionary<string, Ocelot.ServiceDiscovery.IServiceProvider>();
}
public Response<IServiceProvider> Get(string key)
{
IServiceProvider serviceProvider;
if(_serviceProviders.TryGetValue(key, out serviceProvider))
{
return new OkResponse<Ocelot.ServiceDiscovery.IServiceProvider>(serviceProvider);
}
return new ErrorResponse<IServiceProvider>(new List<Ocelot.Errors.Error>()
{
new UnableToFindServiceProviderError($"unabe to find service provider for {key}")
});
}
public Response Add(string key, IServiceProvider serviceProvider)
{
_serviceProviders[key] = serviceProvider;
return new OkResponse();
}
}
}

View File

@ -0,0 +1,12 @@
using Ocelot.Errors;
namespace Ocelot.ServiceDiscovery
{
public class UnableToFindServiceProviderError : Error
{
public UnableToFindServiceProviderError(string message)
: base(message, OcelotErrorCode.UnableToFindServiceProviderError)
{
}
}
}