/// <summary> /// Send all messages to a delegate with one/many handlers. /// </summary> /// <typeparam name="TMessage">Type of message.</typeparam> /// <param name="messageDelegator">Message delegator.</param> /// <param name="messages">Messages to send.</param> /// <param name="cancellationToken">Optional cancellation token to be passed to handlers.</param> /// <returns>Asynchronous task which can be awaited for completion.</returns> public static Task SendAllAsync <TMessage>(this IMessageDelegator messageDelegator, IEnumerable <TMessage> messages, CancellationToken cancellationToken = default(CancellationToken)) where TMessage : class { if (messageDelegator == null) { throw new System.ArgumentNullException(nameof(messageDelegator)); } if (messages == null) { throw new System.ArgumentNullException(nameof(messages)); } // Convert to array. TMessage[] messageList = messages.ToArray(); // Task list. Task[] sendTasks = new Task[messageList.Length]; // Send each messages to start the tasks and add to task list. for (int i = 0; i < messageList.Length; i++) { sendTasks[i] = messageDelegator.SendAsync(messageList[i], cancellationToken); } // Wait for all messages to be sent. return(Task.WhenAll(sendTasks)); }
public void Setup() { // Delegator. var reg = new SingleMessageHandlerRegistration(); reg.Register <TestMessage>(handleMessage); _delegator = new MessageDelegator(reg.BuildMessageHandlerResolver()); // Mediatr. var requestHandler = new TestMediatrRequestHandler(); _mediator = new Mediator((t) => requestHandler, (t) => Enumerable.Empty <object>()); // CQRSLite. Router router = new Router(); router.RegisterHandler <TestCqrsliteCommand>(handleCqrsliteCommand); _commandSender = router; }
public void Setup() { int numOfIterations = 100000; var reg = new MultiMessageHandlerRegistration(); var router = new Router(); var mediatrHandlers = new List <INotificationHandler <TestMediatrNotif> >(); for (int i = 0; i < numOfIterations; i++) { // Register handlers N number of times each. reg.Register <TestMessage>(handleMessage); router.RegisterHandler <TestCqrsliteEvent>(handleCqrsliteMessage); mediatrHandlers.Add(new TestMediatrNotifHandler()); } // Delegator. _delegator = new MessageDelegator(reg.BuildMessageHandlerResolver()); // CQRSLite _eventPublisher = router; // Mediatr _mediator = new Mediator((t) => new object(), (t) => mediatrHandlers); }
/// <summary> /// Constructor. /// </summary> /// <param name="commandDispatcher">Command dispatcher.</param> /// <param name="productReadSideRepository">Product read side repository.</param> public ProductsController(IMessageDelegator commandDispatcher, IProductReadSideRepository productReadSideRepository) { _productRepository = productReadSideRepository; _commandDelegator = commandDispatcher; }
public ActivateProductUseCase(IMessageDelegator commandDispatcher) { _commandDispatcher = commandDispatcher; }
public PublishingProductRepository(IProductRepository inner, IMessageDelegator messageDelegator) { _inner = inner; _messageDelegator = messageDelegator ?? throw new System.ArgumentNullException(nameof(messageDelegator)); }
/// <summary> /// Constructor. /// </summary> /// <param name="messageDelegator">Message delegator.</param> internal MessageProcessorHost(IMessageDelegator messageDelegator) { _messageDelegator = messageDelegator; }
public RegisterProductUseCase(IMessageDelegator commandDispatcher) { _commandDispatcher = commandDispatcher; }
public LoggingCommandDelegator(IMessageDelegator inner, ITestOutputHelper outputHelper) { _inner = inner; _outputHelper = outputHelper; }