private RaftHttpCluster(HttpClusterMemberConfiguration config, IServiceProvider dependencies, out MemberCollectionBuilder members, Func <Action <HttpClusterMemberConfiguration, string>, IDisposable> configTracker) : base(config, out members) { openConnectionForEachRequest = config.OpenConnectionForEachRequest; allowedNetworks = config.AllowedNetworks.ToImmutableHashSet(); metadata = new MemberMetadata(config.Metadata); requestTimeout = config.RequestTimeout; raftRpcTimeout = config.RpcTimeout; connectTimeout = TimeSpan.FromMilliseconds(config.LowerElectionTimeout); duplicationDetector = new DuplicateRequestDetector(config.RequestJournal); clientHandlerName = config.ClientHandlerName; protocolVersion = config.ProtocolVersion; // dependencies configurator = dependencies.GetService <IClusterMemberLifetime>(); messageHandlers = ImmutableList.CreateRange(dependencies.GetServices <IInputChannel>()); AuditTrail = dependencies.GetService <IPersistentState>() ?? new ConsensusOnlyState(); httpHandlerFactory = dependencies.GetService <IHttpMessageHandlerFactory>(); Logger = dependencies.GetRequiredService <ILoggerFactory>().CreateLogger(GetType()); Metrics = dependencies.GetService <MetricsCollector>(); bufferingOptions = dependencies.GetBufferingOptions(); discoveryService = dependencies.GetService <IMemberDiscoveryService>(); // track changes in configuration, do not track membership if discovery service is enabled configurationTracker = configTracker(discoveryService is null ? ConfigurationAndMembershipChanged : ConfigurationChanged); }
private RaftHttpCluster(RaftClusterMemberConfiguration config, out MutableMemberCollection members) : base(config, out members) { OpenConnectionForEachRequest = config.OpenConnectionForEachRequest; allowedNetworks = config.AllowedNetworks; metadata = new MemberMetadata(config.Metadata); RequestTimeout = TimeSpan.FromMilliseconds(config.UpperElectionTimeout); duplicationDetector = new DuplicateRequestDetector(config.RequestJournal); clientHandlerName = config.ClientHandlerName; }