Beispiel #1
0
        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())) + "}"
            };
        }
Beispiel #2
0
 public MockCluster(IEnumerable <IPEndPoint> endpoints, INodeLocator locator, IReconnectPolicyFactory reconnectPolicyFactory, NodeFactory nodeFactory)
     : base(endpoints, locator, reconnectPolicyFactory)
 {
     this.nodeFactory = nodeFactory;
 }