Exemple #1
0
        /// <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--;
            }
        }
Exemple #2
0
        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)
        }
Exemple #3
0
        /// <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();
            }
        }
Exemple #4
0
        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;
        }