Ejemplo n.º 1
0
        public void Message_Handler_Async_With_Transporter()
        {
            ResonanceTransporter t1 = new ResonanceTransporter(new InMemoryAdapter("TST"));
            ResonanceTransporter t2 = new ResonanceTransporter(new InMemoryAdapter("TST"));

            t1.Connect();
            t2.Connect();

            Handlers handlers = new Handlers();

            IDisposable handler = t2.CreateHandlerBuilder()
                                  .ForMessage <CalculateRequest>()
                                  .IncludeTransporter()
                                  .IsAsync()
                                  .Build(handlers.HandleMessageAsyncWithTransporter);

            var request = new CalculateRequest()
            {
                A = 10, B = 15
            };

            t1.Send(request);

            TestHelper.WaitWhile(() => _receivedRequest == null, TimeSpan.FromSeconds(5));

            Assert.AreEqual(_receivedRequest.A + _receivedRequest.B, request.A + request.B);
            Assert.AreEqual(_receivedTransporter, t2);

            _receivedRequest = null;

            handler.Dispose();

            t1.Send(request);

            Thread.Sleep(500);

            Assert.IsNull(_receivedRequest);

            t1.Dispose(true);
            t2.Dispose(true);
        }
Ejemplo n.º 2
0
        public void Request_Handler_Async_With_Response_With_Transporter()
        {
            ResonanceTransporter t1 = new ResonanceTransporter(new InMemoryAdapter("TST"));
            ResonanceTransporter t2 = new ResonanceTransporter(new InMemoryAdapter("TST"));

            t1.Connect();
            t2.Connect();

            Handlers handlers = new Handlers();

            IDisposable handler = t2.CreateHandlerBuilder()
                                  .ForRequest <CalculateRequest>()
                                  .WithResponse <CalculateResponse>()
                                  .IncludeTransporter()
                                  .IsAsync()
                                  .Build(handlers.HandleRequestAsyncWithResponseWithTransporter);

            var request = new CalculateRequest()
            {
                A = 10, B = 15
            };

            var response = t1.SendRequest <CalculateRequest, CalculateResponse>(request);

            Assert.AreEqual(response.Sum, request.A + request.B);
            Assert.AreEqual(_receivedTransporter, t2);

            handler.Dispose();

            Assert.ThrowsException <TimeoutException>(() =>
            {
                t1.SendRequest <CalculateRequest, CalculateResponse>(request, new ResonanceRequestConfig()
                {
                    Timeout = TimeSpan.FromSeconds(1)
                });
            });

            t1.Dispose(true);
            t2.Dispose(true);
        }