dispatch<TEvent extends DomainEvent> method

Future<void> dispatch<TEvent extends DomainEvent>(
  1. TEvent event, [
  2. DispatchStrategy? dispatchStrategy
])

Dispatches the given event to the registered EventHandler's.

Implementation

Future<void> dispatch<TEvent extends DomainEvent>(
  TEvent event, [
  DispatchStrategy? dispatchStrategy,
]) async {
  final handlers = _eventHandlerStore.getHandlersFor<TEvent>();

  assert(
    handlers.isNotEmpty,
    'dispatch<$TEvent> was invoked but no handlers are registered to handle this',
  );

  for (final observer in _observers) {
    observer.onDispatch(event, handlers);
  }

  await (dispatchStrategy ?? _defaultDispatchStrategy)
      .execute(handlers, event, _observers);
}