Exemplo n.º 1
0
        public void SynchronousRequestWithMultipleReplies()
        {
            IFiber responder = new PoolFiber();
            responder.Start();
            var countChannel = new RequestReplyChannel<string, int>();

            var allSent = new AutoResetEvent(false);
            Action<IRequest<string, int>> onRequest =
                delegate(IRequest<string, int> req)
                {
                    for (var i = 0; i <= 5; i++)
                        req.SendReply(i);
                    allSent.Set();
                };
            countChannel.Subscribe(responder, onRequest);
            var response = countChannel.SendRequest("hello");
            int result;
            using (response)
            {
                for (var i = 0; i < 5; i++)
                {
                    Assert.IsTrue(response.Receive(10000, out result));
                    Assert.AreEqual(result, i);
                }
                allSent.WaitOne(10000, false);
            }
            Assert.IsTrue(response.Receive(30000, out result));
            Assert.AreEqual(5, result);
            Assert.IsFalse(response.Receive(30000, out result));
        }
        public void SynchronousRequestWithMultipleReplies()
        {
            IFiber responder = new PoolFiber();

            responder.Start();
            var countChannel = new RequestReplyChannel <string, int>();

            var allSent = new AutoResetEvent(false);
            Action <IRequest <string, int> > onRequest =
                delegate(IRequest <string, int> req)
            {
                for (var i = 0; i <= 5; i++)
                {
                    req.SendReply(i);
                }
                allSent.Set();
            };

            countChannel.Subscribe(responder, onRequest);
            var response = countChannel.SendRequest("hello");
            int result;

            using (response)
            {
                for (var i = 0; i < 5; i++)
                {
                    Assert.IsTrue(response.Receive(10000, out result));
                    Assert.AreEqual(result, i);
                }
                allSent.WaitOne(10000, false);
            }
            Assert.IsTrue(response.Receive(30000, out result));
            Assert.AreEqual(5, result);
            Assert.IsFalse(response.Receive(30000, out result));
        }
Exemplo n.º 3
0
 public void SynchronousRequestReply()
 {
     var responder = new PoolFiber();
     responder.Start();
     var timeCheck = new RequestReplyChannel<string, DateTime>();
     var now = DateTime.Now;
     Action<IRequest<string, DateTime>> onRequest = req => req.SendReply(now);
     timeCheck.Subscribe(responder, onRequest);
     var response = timeCheck.SendRequest("hello");
     DateTime result;
     Assert.IsTrue(response.Receive(10000, out result));
     Assert.AreEqual(result, now);
 }
Exemplo n.º 4
0
        public void RequestReply()
        {
            using (var fiber = new PoolFiber())
            {
                fiber.Start();
                var channel = new RequestReplyChannel <string, string>();
                channel.Subscribe(fiber, req => req.SendReply("bye"));
                var reply = channel.SendRequest("hello");

                string result;
                Assert.IsTrue(reply.Receive(10000, out result));
                Assert.AreEqual("bye", result);
            }
        }
        public void SynchronousRequestReply()
        {
            var responder = new PoolFiber();

            responder.Start();
            var timeCheck = new RequestReplyChannel <string, DateTime>();
            var now       = DateTime.Now;
            Action <IRequest <string, DateTime> > onRequest = req => req.SendReply(now);

            timeCheck.Subscribe(responder, onRequest);
            var      response = timeCheck.SendRequest("hello");
            DateTime result;

            Assert.IsTrue(response.Receive(10000, out result));
            Assert.AreEqual(result, now);
        }
Exemplo n.º 6
0
        public void RequestReply()
        {
            using (var fiber = new PoolFiber())
            {
                fiber.Start();
                var channel = new RequestReplyChannel<string, string>();
                channel.Subscribe(fiber, req => req.SendReply("bye"));
                var reply = channel.SendRequest("hello");

                string result;
                Assert.IsTrue(reply.Receive(10000, out result));
                Assert.AreEqual("bye", result);
            }
        }