public Builder WithAsyncRequestHandler <TRequest, TResponse>(AsyncRequestHandlerDelegate <TRequest, TResponse> handler) where TRequest : class where TResponse : class { RequestDispatcher.RegisterAsync(handler); return(this); }
public static Uri GetAsyncUri(AsyncRequestHandlerDelegate dlg) { var handler = instance.handlerByMethod [dlg.Method]; if (handler == null) { throw new InvalidOperationException(); } return(GetUri(handler)); }
/// <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()); }
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>()); }
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)); }
public static Uri GetAsyncUri (AsyncRequestHandlerDelegate dlg) { var handler = instance.handlerByMethod [dlg.Method]; if (handler == null) throw new InvalidOperationException (); return GetUri (handler); }
public IDisposable Build(AsyncRequestHandlerDelegate <TRequest, TResponse> callback) { return(_transporter.RegisterRequestHandler <TRequest, TResponse>(callback)); }