示例#1
0
        protected virtual ILoadBalanceService CreateLoadBalancerClient(DirectoryServer server, IDirectoryProvider directory)
        {
            ILoadBalanceService result;

            using (DisposeGuard disposeGuard = default(DisposeGuard))
            {
                LoadBalancerClient loadBalancerClient = LoadBalancerClient.Create(server.Fqdn, directory, this.logger);
                disposeGuard.Add <LoadBalancerClient>(loadBalancerClient);
                bool flag = true;
                ILoadBalanceService loadBalanceService = loadBalancerClient;
                if (!loadBalancerClient.ServerVersion[1])
                {
                    flag = false;
                    loadBalanceService = this.CreateCompatibilityLoadBalanceClient(server);
                }
                else if (!loadBalancerClient.ServerVersion[2])
                {
                    loadBalanceService = new SoftDeletedRemovalCapabilityDecorator(loadBalanceService, server);
                }
                if (!loadBalancerClient.ServerVersion[3])
                {
                    loadBalanceService = new ConsumerMetricsLoadBalanceCapabilityDecorator(loadBalanceService, server);
                }
                if (!loadBalancerClient.ServerVersion[5])
                {
                    loadBalanceService = new CapacitySummaryCapabilityDecorator(loadBalanceService, server, this.serviceContext);
                }
                if (flag)
                {
                    disposeGuard.Success();
                }
                result = loadBalanceService;
            }
            return(result);
        }
示例#2
0
        protected ILoadBalanceService CreateCompatibilityLoadBalanceClient(DirectoryServer server)
        {
            this.logger.LogVerbose("Creating full compatibility LB client for server {0}", new object[]
            {
                server.Name
            });
            BackCompatibleLoadBalanceClient               service  = new BackCompatibleLoadBalanceClient(null, server);
            BandAsMetricCapabilityDecorator               service2 = new BandAsMetricCapabilityDecorator(service, this.serviceContext, server);
            SoftDeletedRemovalCapabilityDecorator         service3 = new SoftDeletedRemovalCapabilityDecorator(service2, server);
            ConsumerMetricsLoadBalanceCapabilityDecorator service4 = new ConsumerMetricsLoadBalanceCapabilityDecorator(service3, server);

            return(new CapacitySummaryCapabilityDecorator(service4, server, this.serviceContext));
        }