Example #1
0
        public static void Execute()
        {
            Console.WriteLine("Executing ReqRep test");

            const string inprocAddress = "inproc://reqrep_test";

            byte[] buffer1;
            byte[] buffer2;

            var clientThread = new Thread(
                () => {
                var req = NN.Socket(Domain.SP, Protocol.REQ);
                NN.Connect(req, inprocAddress);
                NN.Send(req, BitConverter.GetBytes((int)42), SendRecvFlags.NONE);
                NN.Recv(req, out buffer1, SendRecvFlags.NONE);
                Debug.Assert(BitConverter.ToInt32(buffer1, 0) == 77);
            });

            clientThread.Start();

            var rep = NN.Socket(Domain.SP, Protocol.REP);

            NN.Bind(rep, inprocAddress);
            NN.Recv(rep, out buffer2, SendRecvFlags.NONE);
            Debug.Assert(BitConverter.ToInt32(buffer2, 0) == 42);
            NN.Send(rep, BitConverter.GetBytes((int)77), SendRecvFlags.NONE);

            // TODO: Test connection of multiple REQ clients to a single REP server.
        }
Example #2
0
            public static void Request()
            {
                var req = NN.Socket(Domain.SP, Protocol.REQ);

                NN.Connect(req, MessageQueueConstants.Address);

                Debug.WriteLine("Request: Sending request");
                NN.Send(req, Encoding.ASCII.GetBytes(MessageQueueConstants.RequestPayload), SendRecvFlags.NONE);

                Debug.WriteLine("Request: Receiving reply");
                byte[] replyPayload;
                NN.Recv(req, out replyPayload, SendRecvFlags.NONE);
                Assert.IsTrue(BitConverter.ToInt32(replyPayload, 0) == MessageQueueConstants.ReplyPayload);
            }
Example #3
0
        public static void Execute()
        {
            Console.WriteLine("Executing Listener test");

            const string inprocAddress = "tcp://127.0.0.1:6522";
            const string unusedAddress = "tcp://127.0.0.1:6521";

            byte[] buffer1;
            byte[] buffer2;

            var clientThread = new Thread(
                () =>
            {
                var req1 = NN.Socket(Domain.SP, Protocol.REQ);
                NN.Connect(req1, unusedAddress);
                var req = NN.Socket(Domain.SP, Protocol.REQ);
                NN.Connect(req, inprocAddress);
                Thread.Sleep(TimeSpan.FromSeconds(3));
                NN.Send(req, BitConverter.GetBytes((int)42), SendRecvFlags.NONE);
                NN.Recv(req, out buffer1, SendRecvFlags.NONE);
                Debug.Assert(BitConverter.ToInt32(buffer1, 0) == 77);
                Console.WriteLine("Response: " + BitConverter.ToInt32(buffer1, 0));
            });

            clientThread.Start();

            var unused = NN.Socket(Domain.SP, Protocol.REP);

            NN.Bind(unused, unusedAddress);
            var rep = NN.Socket(Domain.SP, Protocol.REP);

            NN.Bind(rep, inprocAddress);

            var listener = new NanomsgListener();

            listener.AddSocket(unused);
            listener.AddSocket(rep);
            listener.ReceivedMessage += delegate(int s)
            {
                NN.Recv(s, out buffer2, SendRecvFlags.NONE);
                Console.WriteLine("Message: " + BitConverter.ToInt32(buffer2, 0));
                NN.Send(s, BitConverter.GetBytes((int)77), SendRecvFlags.NONE);
            };

            while (true)
            {
                listener.Listen(TimeSpan.FromMinutes(30));
            }
        }
        private void CreateAndConnectSocket(NanoConnection c)
        {
            c.Socket = NN.Socket(Domain.SP, Protocol.REQ);
            if (c.Socket < 0)
            {
                Dispose();
                throw new Exception("failed to create SP/REQ socket.");
            }

            int ret = NN.Connect(c.Socket, c.Address);

            if (ret < 0)
            {
                Dispose();
                throw new Exception("failed to open connection to: " + c.Address);
            }
        }
Example #5
0
 public override void Connect(string address)
 {
     NN.Connect(this.innerSocket.SocketID, address);
 }