Example #1
0
        public async Task ProcessSocket(TcpClient tcpClient, int maxMessages = -1)
        {
            var clientAddress = GetStageAddress(tcpClient);

            tcpClient.NoDelay = true;


            try
            {
                while (tcpClient.Connected)
                {
                    var message = await ReceiveMessage(tcpClient);


                    var messageData = new MemoryRemoteSocketData()
                    {
                        Address = clientAddress,
                        Data    = message
                    };

                    _messagesBuffer.Post(messageData);


                    if (message == null)
                    {
                        break;
                    }

                    if (maxMessages > 0)
                    {
                        maxMessages--;

                        if (maxMessages == 0)
                        {
                            break;
                        }
                    }
                }

                tcpClient.Dispose();
            }
            catch (Exception ex)
            {
            }
        }
Example #2
0
        private void _routerSocket_ReceiveReady(object sender, NetMQ.NetMQSocketEventArgs e)
        {
            NetMQ.NetMQMessage msg = new NetMQ.NetMQMessage();
            if (e.Socket.TryReceiveMultipartMessage(ref msg, 3))
            {
                var address = msg.Pop();
                var empty   = msg.Pop();
                var data    = msg.Pop();


                var messageData = new MemoryRemoteSocketData()
                {
                    Address = new StageAddress()
                    {
                        Address = address.ConvertToString()
                    },
                    Data = data.Buffer
                };

                _inputBuffer.Post(messageData);
            }
        }