예제 #1
0
        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);
        }
예제 #2
0
 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;
 }