dispatch<R> method

Future<R> dispatch<R>(
  1. Command<R> command
)

Выполняет команду и возвращает результат.

Ошибки:

  • CommandHandlerNotFoundException, если обработчик не найден.
  • CommandTypeMismatchException, если тип команды не соответствует ожидаемому типу обработчика.
  • Любые ошибки обработчика пробрасываются наружу.

Implementation

Future<R> dispatch<R>(Command<R> command) {
  Future<R> run(int index) {
    if (index < _middlewares.length) {
      final middleware = _middlewares[index];
      return middleware.handle<R>(command, () => run(index + 1));
    }
    return _invokeHandler<R>(command);
  }

  return run(0);
}