/**
  * {@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];
         });
     };
 }
Exemplo n.º 2
0
 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;
 }
 /**
  * {@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']);
     };
 }
Exemplo n.º 4
0
 /**
  * @return \SimpleBus\Message\Bus\MessageBus
  */
 public function create() : MessageBus
 {
     $bus = new MessageBusSupportingMiddleware($this->middleware());
     $bus->appendMiddleware(new DelegatesToMessageHandlerMiddleware($this->createHandlerResolver()));
     return $bus;
 }
 public function dispatch(Command $command)
 {
     $this->bus->handle($command);
 }