public void PollMany_Multiple_InOut() { using (var context = new ZContext()) { using (var socket1 = new ZSocket(context, ZSocketType.PAIR)) { socket1.Bind(DefaultEndpoint); using (var socket2 = new ZSocket(context, ZSocketType.PAIR)) { socket2.Connect(DefaultEndpoint); var sockets = new[] { socket1, socket2 }; var pollItems = new[] { ZPollItem.CreateSender(), ZPollItem.CreateReceiver() }; ZMessage[] messages = new[] { new ZMessage(new[] { new ZFrame(32) }), null }; ZError error; // TODO: why does this return false? Assert.IsTrue(sockets.Poll(pollItems, ZPoll.In | ZPoll.Out, ref messages, out error)); Assert.IsNull(error); if (messages[1] == null) { Assert.IsTrue(sockets.Poll(pollItems, ZPoll.In | ZPoll.Out, ref messages, out error)); Assert.IsNull(error); } CollectionAssert.AreEqual(new[] { null, new ZMessage(new[] { new ZFrame(32) }) }, messages); } } } }
public void PollOutMany_Single_Ready() { using (var context = new ZContext()) { using (var socket1 = new ZSocket(context, ZSocketType.PAIR)) { socket1.Bind(DefaultEndpoint); using (var socket2 = new ZSocket(context, ZSocketType.PAIR)) { socket2.Connect(DefaultEndpoint); var sockets = new[] { socket1 }; var pollItems = new[] { ZPollItem.CreateSender() }; // TODO: erroneously using CreateReceiver here causes a SEHException below. Shouldn't this be caught somehow? ZMessage[] messages = new[] { new ZMessage(new[] { new ZFrame(32) }) }; ZError error; Assert.IsTrue(sockets.PollOut(pollItems, messages, out error, TimeSpan.Zero)); Assert.IsNull(error); var message = socket2.ReceiveMessage(); Assert.AreEqual(new ZMessage(new[] { new ZFrame(32) }), message); } } } }
public void PollInSingle_WithSender_Fails() { using (var context = new ZContext()) { using (var socket = new ZSocket(context, ZSocketType.PAIR)) { ZMessage message; ZError error; Assert.Throws <InvalidOperationException>(() => socket.PollIn(ZPollItem.CreateSender(), out message, out error, TimeSpan.Zero)); } } }
public void PollOutSingle_Ready() { using (var context = new ZContext()) { using (var socket1 = new ZSocket(context, ZSocketType.PAIR)) { socket1.Bind(DefaultEndpoint); using (var socket2 = new ZSocket(context, ZSocketType.PAIR)) { socket2.Connect(DefaultEndpoint); ZError error; Assert.IsTrue(socket1.PollOut(ZPollItem.CreateSender(), new ZMessage(new[] { new ZFrame(32) }), out error, TimeSpan.Zero)); Assert.IsNull(error); var message = socket2.ReceiveMessage(); Assert.AreEqual(new ZMessage(new[] { new ZFrame(32) }), message); } } } }