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); } }
private void OnPipeReady(object sender, NetMQSocketEventArgs e) { Assumes.NotNull(m_pipe); Assumes.NotNull(m_pingTimer); Assumes.NotNull(m_poller); NetMQMessage message = m_pipe.ReceiveMultipartMessage(); string command = message.Pop().ConvertToString(); switch (command) { case ConfigureCommand: string interfaceName = message.Pop().ConvertToString(); int port = message.Pop().ConvertToInt32(); Configure(interfaceName, port); break; case PublishCommand: m_transmit = message.Pop(); m_pingTimer.Interval = message.Pop().ConvertToInt32(); m_pingTimer.Enable = true; SendUdpFrame(m_transmit); break; case SilenceCommand: m_transmit = null; m_pingTimer.Enable = false; break; case SubscribeCommand: m_filter = message.Pop(); break; case UnsubscribeCommand: m_filter = null; break; case NetMQActor.EndShimMessage: m_poller.Stop(); break; default: throw new ArgumentOutOfRangeException(); } }
public void HandlePipe() { NetMQMessage message = m_pipe.ReceiveMessage(); string command = message.Pop().ConvertToString(); switch (command) { case ConfigureCommand: string interfaceName = message.Pop().ConvertToString(); int port = message.Pop().ConvertToInt32(); Configure(interfaceName, port); break; case PublishCommand: m_transmit = message.Pop(); m_interval = message.Pop().ConvertToInt32(); // Start broadcasting immediately m_pingAt = Clock.NowMs(); break; case SilenceCommand: m_transmit = null; break; case SubscribeCommand: m_filter = message.Pop(); break; case UnsubscribeCommand: m_filter = null; break; case ActorKnownMessages.END_PIPE: m_terminated = true; break; default: throw new ArgumentOutOfRangeException(); } }