/** * {@inheritdoc} */ public function register(Container $container) { $subscribers = $this->subscribers; $container['public_event_recorder'] = function () use($container) { return new PublicMessageRecorder(); }; $container['event_bus'] = function () use($container) { $bus = new MessageBusSupportingMiddleware(); $bus->appendMiddleware(new FinishesHandlingMessageBeforeHandlingNext()); $bus->appendMiddleware($container['event_bus.notifies_message_subscribers_middleware']); return $bus; }; $container['event_bus.notifies_message_subscribers_middleware'] = function () use($container) { return new NotifiesMessageSubscribersMiddleware($container['event_bus.name_based_message_subscriber_resolver']); }; $container['event_bus.name_based_message_subscriber_resolver'] = function () use($container) { return new NameBasedMessageSubscriberResolver(new NamedMessageNameResolver(), $container['event_bus.lazy_loading_message_subscriber_collection']); }; $container['event_bus.lazy_loading_message_subscriber_collection'] = function () use($container, $subscribers) { return new CallableCollection($subscribers, $container['event_bus.service_locator']); }; $container['event_bus.service_locator'] = function () use($container) { return new ServiceLocatorAwareCallableResolver(function ($serviceId) use($container) { return $container[$serviceId]; }); }; }
/** * {@inheritdoc} */ public function register(Container $container) { $handlers = $this->handlers; $container['command_bus'] = function () use($container) { $bus = new MessageBusSupportingMiddleware(); $bus->appendMiddleware(new LoggingMiddleware($container['logger'], LogLevel::DEBUG)); $bus->appendMiddleware(new FinishesHandlingMessageBeforeHandlingNext()); $bus->appendMiddleware($container['command_bus.delegates_to_message_handler_middleware']); $bus->appendMiddleware($container['command_bus.handles_recorded_messages_middleware']); return $bus; }; $container['command_bus.delegates_to_message_handler_middleware'] = function () use($container) { return new DelegatesToMessageHandlerMiddleware($container['command_bus.name_based_message_handler_resolver']); }; $container['command_bus.name_based_message_handler_resolver'] = function () use($container) { return new NameBasedMessageHandlerResolver(new NamedMessageNameResolver(), $container['command_bus.message_callable_map']); }; $container['command_bus.message_callable_map'] = function () use($container, $handlers) { return new CallableMap($handlers, $container['command_bus.service_locator']); }; $container['command_bus.service_locator'] = function () use($container) { return new ServiceLocatorAwareCallableResolver(function ($serviceId) use($container) { return $container[$serviceId]; }); }; $container['command_bus.handles_recorded_messages_middleware'] = function () use($container) { return new HandlesRecordedMessagesMiddleware($container['public_event_recorder'], $container['event_bus']); }; }
public function __construct(Application $app) { $this->app = $app; $bus = new MessageBusSupportingMiddleware(); $bus->appendMiddleware(new FinishesHandlingMessageBeforeHandlingNext()); $bus->appendMiddleware(new DelegatesToMessageHandlerMiddleware(new SilexCommandHandlerResolver($app))); $this->bus = $bus; }
public function __construct(Application $app) { $this->app = $app; $bus = new MessageBusSupportingMiddleware(); $bus->appendMiddleware(new FinishesHandlingMessageBeforeHandlingNext()); $eventSubscriberCollection = new CallableCollection($app['event_subscribers'], new ServiceLocatorAwareCallableResolver(function ($serviceId) use($app) { return $app[$serviceId]; })); $eventSubscribersResolver = new NameBasedMessageSubscriberResolver(new ClassBasedNameResolver(), $eventSubscriberCollection); $bus->appendMiddleware(new NotifiesMessageSubscribersMiddleware($eventSubscribersResolver)); $this->bus = $bus; }
/** * @return \SimpleBus\Message\Bus\MessageBus */ public function create() : MessageBus { $bus = new MessageBusSupportingMiddleware($this->middleware()); $bus->appendMiddleware(new DelegatesToMessageHandlerMiddleware($this->createHandlerResolver())); return $bus; }