예제 #1
0
        public void CheckTrySendFails()
        {
            using (var dealer = new DealerSocket())
            {
                dealer.Options.SendHighWatermark = 1;
                dealer.Options.Linger            = TimeSpan.Zero;
                dealer.Connect("tcp://127.0.0.1:55555");

                Thread.Sleep(100);

                var success = dealer.TrySendFrame("1");
                Assert.IsTrue(success); // because the SendHighWatermark allows it into the buffers
                success = dealer.TrySendFrame("2");
                Assert.IsFalse(success);
            }
        }
예제 #2
0
        public void CheckTrySend()
        {
            using (var router = new RouterSocket())
                using (var dealer = new DealerSocket())
                {
                    var port = router.BindRandomPort("tcp://127.0.0.1");
                    router.Options.Linger = TimeSpan.Zero;

                    dealer.Options.SendHighWatermark = 1;
                    dealer.Options.Linger            = TimeSpan.Zero;
                    dealer.Connect("tcp://127.0.0.1:" + port);

                    Thread.Sleep(100);

                    Assert.IsTrue(dealer.TrySendFrame("1"));
                    Assert.IsFalse(dealer.TrySendFrame("2"));
                }
        }
예제 #3
0
        public void Unbind(string protocol)
        {
            using (var server = new DealerSocket())
            {
                string address1, address2;

                // just making sure can bind on both addresses
                using (var client1 = new DealerSocket())
                    using (var client2 = new DealerSocket())
                    {
                        if (protocol == "tcp")
                        {
                            var port1 = server.BindRandomPort("tcp://localhost");
                            var port2 = server.BindRandomPort("tcp://localhost");

                            address1 = "tcp://localhost:" + port1;
                            address2 = "tcp://localhost:" + port2;

                            client1.Connect(address1);
                            client2.Connect(address2);
                        }
                        else
                        {
                            Debug.Assert(protocol == "inproc");

                            address1 = "inproc://localhost1";
                            address2 = "inproc://localhost2";

                            server.Bind(address1);
                            server.Bind(address2);

                            client1.Connect(address1);
                            client2.Connect(address2);
                        }

                        Thread.Sleep(100);

                        // we should be connected to both server
                        client1.SendFrame("1");
                        client2.SendFrame("2");

                        // the server receive from both
                        server.SkipFrame();
                        server.SkipFrame();
                    }

                // unbind second address
                server.Unbind(address2);
                Thread.Sleep(100);

                using (var client1 = new DealerSocket())
                    using (var client2 = new DealerSocket())
                    {
                        client1.Options.DelayAttachOnConnect = true;
                        client1.Connect(address1);

                        client2.Options.DelayAttachOnConnect = true;

                        if (protocol == "tcp")
                        {
                            client2.Connect(address2);

                            client1.SendFrame("1");
                            server.SkipFrame();

                            Assert.IsFalse(client2.TrySendFrame(TimeSpan.FromSeconds(2), "2"));
                        }
                        else
                        {
                            Assert.Throws <EndpointNotFoundException>(() => { client2.Connect(address2); });
                        }
                    }
            }
        }