/// <summary> /// /// </summary> private void SendQueue() { var i = m_sendQueue.Count; while (i > 0) { NetMQMessage message; if (m_sendQueue.TryDequeue(out message)) { m_server.TrySendMultipartMessage(message); } i--; } }
private void OnSendReady(object sender, NetMQSocketEventArgs e) { Request request; var counter = 0; do { request = m_requestQueue.DequeueRequest(); if (request == null) { return; // There are no more requests to be sent! // hmmm o que acontece se tiver um send ready e não tiver nada para enviar? vou ser sinalizado novamente!? // se não for tou lixado... porque vou ter mais tarde pedidos e não vai enviar... } counter++; }while (m_client.TrySendMultipartMessage(request.Payload) && counter < 100); // need to be careful with sending starvation!? // TODO quando falhar... tenho de voltar a repor o pedido (ou posso esperar ele "fingir" que foi enviado e mais tarde vai dar timeout) }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void SendQueue(object sender, NetMQTimerEventArgs e) { var i = m_sendQueue.Count; while (i > 0) { NetMQMessage message; if (m_sendQueue.TryDequeue(out message)) { m_client.TrySendMultipartMessage(message); } i--; } if (m_connected && (m_receiveTimer.ElapsedMilliseconds - m_lastReceived > DISCONNECTION_TIMEOUT)) { SetDisconnected(); SendGreet(); } }
public bool Send(NetMQSocket mailbox) { var routingId = _routingId; _routingId = null; var message = Encode(this); if (message != null) { if (mailbox is RouterSocket) { message.Push(routingId); } mailbox.TrySendMultipartMessage(TimeSpan.Zero, message); return true; } return false; }