mirror of
				https://github.com/nsnail/Ocelot.git
				synced 2025-11-04 15:30:49 +08:00 
			
		
		
		
	added houses
This commit is contained in:
		@@ -23,6 +23,8 @@
 | 
			
		||||
        DownstreamSchemeNullOrEmptyError,
 | 
			
		||||
        DownstreamHostNullOrEmptyError,
 | 
			
		||||
        ServicesAreNullError,
 | 
			
		||||
        ServicesAreEmptyError
 | 
			
		||||
        ServicesAreEmptyError,
 | 
			
		||||
        UnableToFindServiceProviderError,
 | 
			
		||||
        UnableToFindLoadBalancerError
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,12 @@
 | 
			
		||||
using Ocelot.Errors;
 | 
			
		||||
 | 
			
		||||
namespace Ocelot.LoadBalancer.LoadBalancers
 | 
			
		||||
{
 | 
			
		||||
    public class UnableToFindLoadBalancerError : Errors.Error
 | 
			
		||||
    {
 | 
			
		||||
        public UnableToFindLoadBalancerError(string message) 
 | 
			
		||||
            : base(message, OcelotErrorCode.UnableToFindLoadBalancerError)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										12
									
								
								src/Ocelot/ServiceDiscovery/IServiceProviderHouse.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/Ocelot/ServiceDiscovery/IServiceProviderHouse.cs
									
									
									
									
									
										Normal 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);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								src/Ocelot/ServiceDiscovery/ServiceProviderHouse.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								src/Ocelot/ServiceDiscovery/ServiceProviderHouse.cs
									
									
									
									
									
										Normal 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();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,12 @@
 | 
			
		||||
using Ocelot.Errors;
 | 
			
		||||
 | 
			
		||||
namespace Ocelot.ServiceDiscovery
 | 
			
		||||
{
 | 
			
		||||
    public class UnableToFindServiceProviderError : Error
 | 
			
		||||
    {
 | 
			
		||||
        public UnableToFindServiceProviderError(string message) 
 | 
			
		||||
            : base(message, OcelotErrorCode.UnableToFindServiceProviderError)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user