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. }
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); }
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); } }
public override void Connect(string address) { NN.Connect(this.innerSocket.SocketID, address); }