public ICommandHandlerCollection Add <TCommand>(ICommandHandler <TCommand> handler) { Ensure.NotNull(handler, "handler"); HandlerDescriptor descriptor = descriptorProvider.Get(handler, typeof(TCommand)); lock (storageLock) storage[descriptor.ArgumentType] = descriptor; return(this); }
public Task PublishAsync <TEvent>(TEvent payload) { Ensure.NotNull(payload, "payload"); ArgumentDescriptor argument = descriptorProvider.Get(payload); HashSet <HandlerDescriptor> handlers; if (storage.TryGetValue(argument.ArgumentType, out handlers)) { return(PublishAsync(handlers, argument, payload, true)); } return(Async.CompletedTask); }
public ICommandHandlerCollection Add <TCommand>(ICommandHandler <TCommand> handler) { Ensure.NotNull(handler, "handler"); HandlerDescriptor descriptor = descriptorProvider.Get(handler, typeof(TCommand)); lock (storageLock) storage[descriptor.ArgumentType] = descriptor; if (log.IsDebugEnabled()) { log.Debug($"Added a handler '{descriptor.HandlerIdentifier ?? descriptor.Handler.GetType().FullName}'."); } return(this); }
public IEventHandlerCollection Add <TEvent>(IEventHandler <TEvent> handler) { Ensure.NotNull(handler, "handler"); HandlerDescriptor descriptor = descriptorProvider.Get(handler, typeof(TEvent)); HashSet <HandlerDescriptor> handlers; if (!storage.TryGetValue(descriptor.ArgumentType, out handlers)) { storage[descriptor.ArgumentType] = handlers = new HashSet <HandlerDescriptor>(); } handlers.Add(descriptor); return(this); }
private Task HandleAsync <TCommand>(TCommand command, bool isPersistenceUsed) { Ensure.NotNull(command, "command"); ArgumentDescriptor argument = descriptorProvider.Get(command); HandlerDescriptor handler; if (handlers.TryGet(argument.ArgumentType, out handler)) { return(HandleInternalAsync(handler, argument, command, isPersistenceUsed, true)); } DispatcherExceptionHandlers.Handle(new MissingCommandHandlerException(argument.ArgumentType)); return(Async.CompletedTask); }
public void AddHandler() { var descriptorProvider = new HandlerDescriptorProvider( typeof(IEventHandler <>), typeof(IEventHandlerContext <>), TypeHelper.MethodName <IEventHandler <object>, object, Task>(h => h.HandleAsync), new DefaultExceptionHandlerCollection(), new DefaultExceptionHandlerCollection() ); HandlerDescriptor descriptor = descriptorProvider.Get(new OrderPlacedHandler(), typeof(OrderPlaced)); Assert.AreEqual(true, descriptor.IsPlain); Assert.AreEqual(false, descriptor.IsEnvelope); Assert.AreEqual(false, descriptor.IsContext); }