private RaftHttpCluster(IOptionsMonitor <RaftClusterMemberConfiguration> config, IServiceProvider dependencies, out MemberCollectionBuilder members) : this(config.CurrentValue, dependencies, out members, config.OnChange) { }
private protected RaftHttpCluster(IServiceProvider dependencies, out MemberCollectionBuilder members) : this(dependencies.GetRequiredService <IOptionsMonitor <RaftClusterMemberConfiguration> >(), dependencies, out members) { }
private RaftHttpCluster(RaftClusterMemberConfiguration config, IServiceProvider dependencies, out MemberCollectionBuilder members, Func <Action <RaftClusterMemberConfiguration, string>, IDisposable> configTracker) : 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; 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>(); //track changes in configuration configurationTracker = configTracker(ConfigurationChanged); }