dispatch<TEvent extends DomainEvent> method
Future<void>
dispatch<TEvent extends DomainEvent>(
- TEvent event, [
- DispatchStrategy? dispatchStrategy
Dispatches the given event
to the registered EventHandler's.
Implementation
Future<void> dispatch<TEvent extends DomainEvent>(
TEvent event, [
DispatchStrategy? dispatchStrategy,
]) async {
late final eventRuntimeType = event.runtimeType;
final handlers = {
// Add handlers for TEvent.
..._eventHandlerStore.getHandlersFor(TEvent),
// If a base type was used, add handlers for the runtime type.
if (eventRuntimeType != TEvent)
..._eventHandlerStore.getHandlersFor(eventRuntimeType)
};
for (final observer in _observers) {
observer.onDispatch(event, handlers);
}
await (dispatchStrategy ?? _defaultDispatchStrategy)
.execute(handlers, event, _observers);
}