internal static void AddCondenserRouter(this IServiceCollection self,
                                                string agentAddress, int agentPort,
                                                IHealthConfig health, IRoutingConfig routingConfig,
                                                IHttpClientConfig httpClientConfig)
        {
            var config = new CondenserConfiguration
            {
                AgentPort    = agentPort,
                AgentAddress = agentAddress
            };

            self.AddRouting();
            self.AddSingleton(health);
            self.AddSingleton(routingConfig);
            self.AddSingleton(httpClientConfig);

            self.AddSingleton <RoutingData>();
            self.AddSingleton(config);
            self.AddSingleton <IService, HealthRouter>();
            self.AddSingleton <IService, RouteSummary>();
            self.AddSingleton <IService, TreeRouter>();
            self.AddSingleton <IService, ChangeRoutingStrategy>();
            self.AddSingleton <IService, ServerStatsRoute>();
            self.AddTransient <IRoutingStrategy <IService>, RandomRoutingStrategy <IService> >();
            self.AddTransient <IRoutingStrategy <IService>, RoundRobinRoutingStrategy <IService> >();
            self.AddSingleton <IDefaultRouting <IService>,
                               DefaultRouting <IService> >();

            self.AddTransient <ChildContainer <IService> >();
            self.AddSingleton <CurrentState>();
            self.AddSingleton <CustomRouter>();
            self.AddSingleton <RoutingHost>();
            self.AddSingleton <RadixTree <IService> >();

            self.AddTransient <Service>();
            self.AddSingleton <Func <IConsulService> >(x => x.GetService <Service>);
            self.AddSingleton <Func <ChildContainer <IService> > >(x => x.GetService <ChildContainer <IService> >);
        }
示例#2
0
 public Service(CurrentState stats,
                IHttpClientConfig clientFactory)
 {
     _stats         = stats;
     _clientFactory = clientFactory;
 }
        public static IServiceCollection AddCondenser(this IServiceCollection self, string agentAddress, int agentPort,
                                                      IHealthConfig health, IRoutingConfig routingConfig, IHttpClientConfig httpClientConfig,
                                                      IEnumerable <IRoutingStrategy <IService> > strategies)
        {
            var config = new CondenserConfiguration
            {
                AgentPort    = agentPort,
                AgentAddress = agentAddress
            };

            self.AddSingleton(config);
            self.AddSingleton(health);
            self.AddSingleton(routingConfig);
            self.AddSingleton <Func <string, HttpClient> >(httpClientConfig.Create);

            self.AddSingleton <RoutingData>();
            self.AddSingleton <IService, HealthStatsRouter>();
            self.AddSingleton <IService, HealthRouter>();
            self.AddSingleton <IRouteStore, RouteStore>();
            self.AddSingleton <IRouteSource, ConsulRouteSource>();
            self.AddSingleton <IService, RouteSummary>();
            self.AddSingleton <IService, TreeRouter>();
            self.AddSingleton <IService, ChangeRoutingStrategy>();
            self.AddSingleton <IService, ServerStatsRoute>();
            self.AddTransient <IRoutingStrategy <IService>, RandomRoutingStrategy <IService> >();
            self.AddTransient <IRoutingStrategy <IService>, RoundRobinRoutingStrategy <IService> >();
            self.AddSingleton <IDefaultRouting <IService>, DefaultRouting <IService> >();

            foreach (var service in strategies)
            {
                self.AddSingleton(service);
            }

            self.AddTransient <ChildContainer <IService> >();
            self.AddTransient <CurrentState>();
            self.AddSingleton <CustomRouter>();
            self.AddSingleton <RoutingHost>();
            self.AddSingleton <RadixTree <IService> >();

            self.AddTransient <Service>();
            self.AddSingleton <Func <IConsulService> >(x => x.GetService <Service>);
            self.AddSingleton <Func <ICurrentState> >(x => x.GetService <CurrentState>);
            self.AddSingleton <Func <ChildContainer <IService> > >(x => x.GetService <ChildContainer <IService> >);

            return(self);
        }
示例#4
0
 public HttpClient(IHttpClientConfig config, ILogger logger)
 {
     this.currentLogger = logger ?? new NullLogger(typeof(HttpClient));
     this.currentConfig = config ?? new NullHttpClientConfig();
     this.Logger.Debug("Constructor Complete");
 }
示例#5
0
 public HttpClient(IHttpClientConfig config)
     : this(config, null)
 {
 }