예제 #1
0
 private RaftHttpCluster(IOptionsMonitor <RaftClusterMemberConfiguration> config, IServiceProvider dependencies, out MemberCollectionBuilder members)
     : this(config.CurrentValue, dependencies, out members, config.OnChange)
 {
 }
예제 #2
0
 private protected RaftHttpCluster(IServiceProvider dependencies, out MemberCollectionBuilder members)
     : this(dependencies.GetRequiredService <IOptionsMonitor <RaftClusterMemberConfiguration> >(), dependencies, out members)
 {
 }
예제 #3
0
 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);
 }