示例#1
0
        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);
                    }
                }
            }
        }
示例#2
0
        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);
                    }
                }
            }
        }
示例#3
0
 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));
         }
     }
 }
示例#4
0
        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);
                    }
                }
            }
        }