// constructors protected Cluster(ClusterSettings settings, IClusterableServerFactory serverFactory, IEventSubscriber eventSubscriber) { _settings = Ensure.IsNotNull(settings, nameof(settings)); _serverFactory = Ensure.IsNotNull(serverFactory, nameof(serverFactory)); Ensure.IsNotNull(eventSubscriber, nameof(eventSubscriber)); _state = new InterlockedInt32(State.Initial); _rapidHeartbeatTimerCallbackState = new InterlockedInt32(RapidHeartbeatTimerCallbackState.NotRunning); _clusterId = new ClusterId(); _description = CreateInitialDescription(); _descriptionChangedTaskCompletionSource = new TaskCompletionSource <bool>(); _latencyLimitingServerSelector = new LatencyLimitingServerSelector(settings.LocalThreshold); _rapidHeartbeatTimer = new Timer(RapidHeartbeatTimerCallback, null, Timeout.InfiniteTimeSpan, Timeout.InfiniteTimeSpan); eventSubscriber.TryGetEventHandler(out _descriptionChangedEventHandler); eventSubscriber.TryGetEventHandler(out _selectingServerEventHandler); eventSubscriber.TryGetEventHandler(out _selectedServerEventHandler); eventSubscriber.TryGetEventHandler(out _selectingServerFailedEventHandler); _serverSessionPool = new CoreServerSessionPool(this); ClusterDescription CreateInitialDescription() { #pragma warning disable CS0618 // Type or member is obsolete var connectionModeSwitch = _settings.ConnectionModeSwitch; var clusterConnectionMode = connectionModeSwitch == ConnectionModeSwitch.UseConnectionMode ? _settings.ConnectionMode : default; var directConnection = connectionModeSwitch == ConnectionModeSwitch.UseDirectConnection ? _settings.DirectConnection : default; return(ClusterDescription.CreateInitial(_clusterId, clusterConnectionMode, _settings.ConnectionModeSwitch, directConnection)); #pragma warning restore CS0618 // Type or member is obsolete } }
// constructors protected Cluster(ClusterSettings settings, IClusterableServerFactory serverFactory, IEventSubscriber eventSubscriber) { _settings = Ensure.IsNotNull(settings, nameof(settings)); _serverFactory = Ensure.IsNotNull(serverFactory, nameof(serverFactory)); Ensure.IsNotNull(eventSubscriber, nameof(eventSubscriber)); _state = new InterlockedInt32(State.Initial); _clusterId = new ClusterId(); _description = ClusterDescription.CreateInitial(_clusterId, _settings.ConnectionMode); _descriptionChangedTaskCompletionSource = new TaskCompletionSource <bool>(); _latencyLimitingServerSelector = new LatencyLimitingServerSelector(settings.LocalThreshold); _rapidHeartbeatTimer = new Timer(RapidHeartbeatTimerCallback, null, Timeout.InfiniteTimeSpan, Timeout.InfiniteTimeSpan); eventSubscriber.TryGetEventHandler(out _descriptionChangedEventHandler); eventSubscriber.TryGetEventHandler(out _selectingServerEventHandler); eventSubscriber.TryGetEventHandler(out _selectedServerEventHandler); eventSubscriber.TryGetEventHandler(out _selectingServerFailedEventHandler); _serverSessionPool = new CoreServerSessionPool(this); }