/// <summary> /// Initializes a new default implementation of Raft-based cluster. /// </summary> /// <param name="configuration">The configuration of the cluster.</param> public RaftCluster(NodeConfiguration configuration) : base(configuration, out var members) { Metrics = configuration.Metrics; publicEndPoint = configuration.PublicEndPoint; metadata = ImmutableDictionary.CreateRange(StringComparer.Ordinal, configuration.Metadata); clientFactory = configuration.CreateMemberClient; serverFactory = configuration.CreateServer; // create members without starting clients foreach (var member in configuration.Members) { members.Add(configuration.CreateMemberClient(this, member, configuration.Metrics as IClientMetricsCollector)); } }