internal NodeGroup(RelayNodeGroupDefinition groupDefinition, RelayNodeConfig nodeConfig, ForwardingConfig forwardingConfig) { GroupDefinition = groupDefinition; Activated = groupDefinition.Activated; _clusterByRange = groupDefinition.UseIdRanges; _forwardingConfig = forwardingConfig; RelayNodeClusterDefinition myClusterDefinition = NodeManager.Instance.GetMyNodeClusterDefinition(); foreach (RelayNodeClusterDefinition clusterDefintion in groupDefinition.RelayNodeClusters) { NodeCluster nodeCluster = new NodeCluster(clusterDefintion, nodeConfig, this, forwardingConfig); if (clusterDefintion == myClusterDefinition) { MyCluster = nodeCluster; } Clusters.Add(nodeCluster); } _nodeReselectTimerCallback = new System.Threading.TimerCallback(NodeReselectTimer_Elapsed); if (_nodeReselectTimer == null) { _nodeReselectTimer = new System.Threading.Timer(_nodeReselectTimerCallback); } _nodeReselectTimer.Change(NodeReselectIntervalMilliseconds, NodeReselectIntervalMilliseconds); QueueTimerCallback = new System.Threading.TimerCallback(QueueTimer_Elapsed); if (QueueTimer == null) { QueueTimer = new System.Threading.Timer(QueueTimerCallback); } QueueTimer.Change(DequeueIntervalMilliseconds, DequeueIntervalMilliseconds); }