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