private void Run(PairSocket shim) { _shim = shim; using (_publisherSocket = new XPublisherSocket()) { _publisherSocket.SetWelcomeMessage(WelcomeMessage); _publisherSocket.Bind(_address); _publisherSocket.ReceiveReady += DropPublisherSubscriptions; _heartbeatTimer = new NetMQTimer(_heartbeatInterval); _heartbeatTimer.Elapsed += OnHeartbeatTimerElapsed; if (_receiveTimeout > 0) { _receiveTimeoutTimer = new NetMQTimer(1000); _receiveTimeoutTimer.Enable = false; _receiveTimeoutTimer.Elapsed += OnReceiveTimeout;; } shim.ReceiveReady += OnShimMessage; // signal the actor that the shim is ready to work shim.SignalOK(); _poller = new NetMQPoller { _publisherSocket, shim, _heartbeatTimer, _receiveTimeoutTimer }; // Polling until poller is cancelled _poller.Run(); } }
public static void Run() { using (var publisherSocket = new XPublisherSocket()) { publisherSocket.SetWelcomeMessage("WM"); publisherSocket.Bind("tcp://*:6669"); // we just drop subscriptions publisherSocket.ReceiveReady += (sender, eventArgs) => publisherSocket.SkipMultipartMessage(); var poller = new NetMQPoller { publisherSocket }; // send a message every second var sendMessageTimer = new NetMQTimer(1000); poller.Add(sendMessageTimer); sendMessageTimer.Elapsed += (sender, eventArgs) => publisherSocket.SendMoreFrame("A").SendFrame(new Random().Next().ToString()); // send heartbeat every two seconds var heartbeatTimer = new NetMQTimer(2000); poller.Add(heartbeatTimer); heartbeatTimer.Elapsed += (sender, eventArgs) => publisherSocket.SendFrame("HB"); poller.Stop(); } }
private void Run(PairSocket shim) { using (m_publisherSocket = new XPublisherSocket(m_address)) { m_publisherSocket.SetWelcomeMessage(WelcomeMessage); m_publisherSocket.ReceiveReady += DropPublisherSubscriptions; m_heartbeatTimer = new NetMQTimer(HeartbeatInterval); m_heartbeatTimer.Elapsed += OnHeartbeatTimerElapsed; shim.ReceiveReady += OnShimMessage; // signal the actor that the shim is ready to work shim.SignalOK(); m_poller = new NetMQPoller { m_publisherSocket, shim }; m_poller.Add(m_heartbeatTimer); // Polling until poller is cancelled m_poller.Run(); } }
public void WelcomeMessage() { using (var pub = new XPublisherSocket()) using (var sub = new SubscriberSocket()) { pub.Bind("inproc://welcome"); pub.SetWelcomeMessage("W"); sub.Subscribe("W"); sub.Connect("inproc://welcome"); var subscription = pub.ReceiveFrameBytes(); Assert.AreEqual(subscription[1], (byte)'W'); Assert.AreEqual("W", sub.ReceiveFrameString()); } }