private NodeQueue ioQueue; // the nodes that has IO pending protected ClusterBase(IEnumerable <IPEndPoint> endpoints, INodeLocator locator, IReconnectPolicyFactory reconnectPolicyFactory) { var finalEndpoints = (endpoints ?? throw new ArgumentNullException(nameof(endpoints))).ToArray(); if (finalEndpoints.Length < 1) { throw new ArgumentException("Must provide at least one endpoint to connect to", nameof(endpoints)); } this.endpoints = finalEndpoints; this.locator = locator ?? throw new ArgumentNullException(nameof(locator)); this.reconnectPolicies = new Dictionary <INode, IReconnectPolicy>(); this.reconnectPolicyFactory = reconnectPolicyFactory; this.ioQueue = NodeQueue.Empty; StateLock = new object(); shutdownToken = new CancellationTokenSource(); workerIsDone = new ManualResetEventSlim(false); worker = new Thread(Worker) { Name = "IO Thread {" + String.Join(", ", finalEndpoints.Select(e => e.ToString())) + "}" }; }
public MockCluster(IEnumerable <IPEndPoint> endpoints, INodeLocator locator, IReconnectPolicyFactory reconnectPolicyFactory, NodeFactory nodeFactory) : base(endpoints, locator, reconnectPolicyFactory) { this.nodeFactory = nodeFactory; }