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); }
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)); }