コード例 #1
0
 public Builder WithAsyncRequestHandler <TRequest, TResponse>(AsyncRequestHandlerDelegate <TRequest, TResponse> handler)
     where TRequest : class
     where TResponse : class
 {
     RequestDispatcher.RegisterAsync(handler);
     return(this);
 }
コード例 #2
0
ファイル: Server.cs プロジェクト: chamons/mac-samples-1
        public static Uri GetAsyncUri(AsyncRequestHandlerDelegate dlg)
        {
            var handler = instance.handlerByMethod [dlg.Method];

            if (handler == null)
            {
                throw new InvalidOperationException();
            }

            return(GetUri(handler));
        }
コード例 #3
0
        /// <summary>
        /// Registers an <see cref="AsyncRequestHandlerDelegate{TRequest, TResponse}"/>
        /// </summary>
        /// <typeparam name="TRequest">Type of request object</typeparam>
        /// <typeparam name="TResponse">Type of response object</typeparam>
        /// <param name="handler">Request handler instance</param>
        public void RegisterAsync <TRequest, TResponse>(AsyncRequestHandlerDelegate <TRequest, TResponse> handler)
        {
            ValidateTypes <TRequest, TResponse>();

            requestHandlers.Add(
                typeof(TRequest),
                request =>
                handler((TRequest)request)
                .GetAwaiter()
                .GetResult());
        }
コード例 #4
0
        public void RegisterAsync_WithAsyncHandlerFunction_WithUnserializableResponseType_ThrowsUnserializableTypeException()
        {
            // Arrange
            var dispatcher = new DIRequestDispatcher(container);
            AsyncRequestHandlerDelegate <Request, UnserializableResponse> handler = request => Task.FromResult(default(UnserializableResponse));

            // Act
            TestDelegate register = () => dispatcher.RegisterAsync(handler);

            // Assert
            Assert.That(register, Throws.TypeOf <UnserializableTypeException>());
        }
コード例 #5
0
        public void Handle_WithAsyncHandlerRegistered_ReturnsResponse()
        {
            // Arrange
            Response ret         = null;
            var      dispatcher  = new DIRequestDispatcher(container);
            var      requestTask = new RequestTask(receiver, request, r => ret = (Response)r, _ => { });
            AsyncRequestHandlerDelegate <Request, Response> handler = request => Task.FromResult(response);

            dispatcher.RegisterAsync(handler);

            // Act
            dispatcher.Handle(ref requestTask);

            // Assert
            Assert.That(ret is Response, Is.True);
            Assert.That(ret, Is.SameAs(response));
        }
コード例 #6
0
ファイル: Server.cs プロジェクト: RafasTavares/mac-samples
		public static Uri GetAsyncUri (AsyncRequestHandlerDelegate dlg)
		{
			var handler = instance.handlerByMethod [dlg.Method];
			if (handler == null)
				throw new InvalidOperationException ();

			return GetUri (handler);
		}
コード例 #7
0
 public IDisposable Build(AsyncRequestHandlerDelegate <TRequest, TResponse> callback)
 {
     return(_transporter.RegisterRequestHandler <TRequest, TResponse>(callback));
 }