/// <summary> /// Create a new NetMQTimer with the given timer-interval in milliseconds. /// </summary> /// <param name="interval">an integer specifying the timer-interval in milliseconds</param> /// <remarks> /// This sets the When property to an initial value of -1, to indicate it no future-time applies as yet. /// </remarks> public NetMQTimer(int interval) { m_interval = interval; m_timerEventArgs = new NetMQTimerEventArgs(this); m_enable = true; When = -1; }
private void ClearDeadNodes(object sender, NetMQTimerEventArgs e) { // create an array with the dead nodes var deadNodes = m_nodes. Where(n => DateTime.Now > n.Value + m_deadNodeTimeout) .Select(n => n.Key).ToArray(); // remove all the dead nodes from the nodes list and disconnect from the publisher foreach (var node in deadNodes) { m_nodes.Remove(node); m_publisher.Disconnect(node.Address); m_shim.SendMoreFrame(RemovedNodeCommand).SendFrame(node.Address); } }
private void PingElapsed(object sender, NetMQTimerEventArgs e) { SendUdpFrame(m_transmit); }
private void OnTimeoutTimer(object sender, NetMQTimerEventArgs e) { // dispose the current subscriber socket and try to connect m_poller.RemoveSocket(m_subscriber); m_subscriber.Dispose(); m_subscriber = null; Connect(); }
private void OnReconnectTimer(object sender, NetMQTimerEventArgs e) { // try to connect again Connect(); }
private void OnHeartbeatTimerElapsed(object sender, NetMQTimerEventArgs e) { // Heartbeat timer elapsed, let's send another heartbeat m_publisherSocket.SendFrame(HeartbeatMessage); }
private void PingElapsed(object sender, NetMQTimerEventArgs e) { Assumes.NotNull(m_transmit); SendUdpFrame(m_transmit); }
private void OnPingPeer(object sender, NetMQTimerEventArgs e) { foreach (var peer in _peers.Values) { var clockTime = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond; if (clockTime >= peer.ExpiredAt) { if (_verbose) { Trace.WriteLine( string.Format( "({0}) peer expired name={1} endpoint={2}", _name, peer.Name, peer.Endpoint)); } RemovePeer(peer); } else if (clockTime >= peer.EvasiveAt) { // If peer is being evasive, force a TCP ping. // TODO: do this only once for a peer in this state; // it would be nicer to use a proper state machine // for peer management. if (_verbose) { Trace.WriteLine( string.Format( "({0}) peer seems dead/slow name={1} endpoint={2}", _name, peer.Name, peer.Endpoint)); } var ping = new ZreMessage(ZreMessageType.Ping); peer.Send(ping); // Inform the calling application this peer is being evasive _pipe .SendMoreFrame("EVASIVE") .SendMoreFrame(peer.Identity.ToString()) .SendFrame(peer.Name); } } }