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) { } }
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); } }