Пример #1
0
        public void StreamToStream()
        {
            using (NetMQContext context = NetMQContext.Create())
            {
                using (var server = context.CreateStreamSocket())
                {
                    server.Bind("tcp://*:5557");

                    using (var client = context.CreateStreamSocket())
                    {
                        client.Connect("tcp://127.0.0.1:5557");

                        byte[] id = client.Options.Identity;

                        client.SendMore(id).Send("GET /\r\n");

                        id = server.Receive();

                        string message = server.ReceiveString();

                        Assert.AreEqual(message, "GET /\r\n");

                        string response = "HTTP/1.0 200 OK\r\n" +
                                          "Content-Type: text/plain\r\n\r\n" + "Hello, World!";

                        server.SendMore(id).Send(response);

                        id      = client.Receive();
                        message = client.ReceiveString();

                        Assert.AreEqual(message, response);
                    }
                }
            }
        }
Пример #2
0
        protected void CreateServer()
        {
            switch (_type)
            {
            case MQServerType.Response:
                _serverSocket = _context.CreateResponseSocket(); break;

            case MQServerType.Publisher:
                _serverSocket = _context.CreatePublisherSocket(); break;

            case MQServerType.Router:
                _serverSocket = _context.CreateRouterSocket(); break;

            case MQServerType.Stream:
                _serverSocket = _context.CreateStreamSocket(); break;

            case MQServerType.Push:
                _serverSocket = _context.CreatePushSocket(); break;

            case MQServerType.XPublisher:
                _serverSocket = _context.CreateXPublisherSocket(); break;

            default:
                _serverSocket = _context.CreateResponseSocket(); break;
            }

            _serverSocket.Bind("tcp://*:" + _port);
        }
Пример #3
0
        void CreateServer()
        {
            switch (_type)
            {
            case ServerType.Response:
                _serverSocket = _context.CreateResponseSocket(); break;

            case ServerType.Pub:
                _serverSocket = _context.CreatePushSocket(); break;

            case ServerType.Router:
                _serverSocket = _context.CreateRouterSocket(); break;

            case ServerType.Stream:
                _serverSocket = _context.CreateStreamSocket(); break;

            case ServerType.Push:
                _serverSocket = _context.CreatePushSocket(); break;

            case ServerType.XPub:
                _serverSocket = _context.CreateXPublisherSocket(); break;

            default:
                _serverSocket = _context.CreateResponseSocket(); break;
            }
            _serverSocket.Bind("tcp://*:" + _port);
            Task.Factory.StartNew(() =>
                                  AsyncRead(_serverSocket), TaskCreationOptions.LongRunning);
        }
Пример #4
0
        void CreateClient()
        {
            switch (_type)
            {
            case MQClientType.Request:
                _clientSocket = _context.CreateRequestSocket();
                break;

            case MQClientType.Subscriber:
                _clientSocket = _context.CreateSubscriberSocket();
                break;

            case MQClientType.Dealer:
                _clientSocket = _context.CreateDealerSocket();
                break;

            case MQClientType.Stream:
                _clientSocket = _context.CreateStreamSocket();
                break;

            case MQClientType.Pull:
                _clientSocket = _context.CreatePullSocket();
                break;

            case MQClientType.XSubscriber:
                _clientSocket = _context.CreateXSubscriberSocket();
                break;

            default:
                _clientSocket = _context.CreateRequestSocket();
                break;
            }
            _clientSocket.Connect("tcp://" + _ip + ":" + _port);
        }
Пример #5
0
        public void NativeSocket()
        {
            using (NetMQContext context = NetMQContext.Create())
            {
                using (var streamServer = context.CreateStreamSocket())
                {
                    streamServer.Bind("tcp://*:5557");

                    using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
                    {
                        socket.Connect("127.0.0.1", 5557);

                        byte[] buffer = new byte[] { 1 };
                        socket.Send(buffer);

                        byte[] identity = streamServer.Receive();
                        byte[] message  = streamServer.Receive();

                        Assert.AreEqual(buffer[0], message[0]);

                        ManualResetEvent socketSignal = new ManualResetEvent(false);

                        Poller poller = new Poller();
                        poller.AddPollInSocket(socket, s =>
                        {
                            socket.Receive(buffer);

                            socketSignal.Set();

                            // removing the socket
                            poller.RemovePollInSocket(socket);
                        });

                        poller.PollTillCancelledNonBlocking();

                        // no message is waiting for the socket so it should fail
                        Assert.IsFalse(socketSignal.WaitOne(200));

                        // sending a message back to the socket
                        streamServer.SendMore(identity).Send("a");

                        Assert.IsTrue(socketSignal.WaitOne(200));

                        socketSignal.Reset();

                        // sending a message back to the socket
                        streamServer.SendMore(identity).Send("a");

                        // we remove the native socket so it should fail
                        Assert.IsFalse(socketSignal.WaitOne(200));

                        poller.Stop(true);
                    }
                }
            }
        }
Пример #6
0
        public void RunPipeline(PairSocket shim)
        {
            shim.SignalOK();

            shim.ReceiveReady += OnShimReady;

            m_messagesPipe = m_context.CreatePairSocket();
            m_messagesPipe.Connect(string.Format("inproc://wsrouter-{0}", m_id));
            m_messagesPipe.ReceiveReady += OnMessagePipeReady;

            m_stream = m_context.CreateStreamSocket();
            m_stream.ReceiveReady += OnStreamReady;

            m_poller = new Poller(m_messagesPipe, shim, m_stream);

            m_messagesPipe.SignalOK();

            m_poller.Start();

            m_messagesPipe.Dispose();
            m_stream.Dispose();
        }