Пример #1
0
 /**
  * Adds listeners for specific message
  *
  * @param int         $messageType taken from MessageType cons
  * @param \Closure    $callback
  *
  */
 public function addAction($messageType, \Closure $callback)
 {
     $messageType = new MessageType($messageType);
     if (array_key_exists($messageType->getType(), $this->actionsToRun)) {
         throw new InvalidArgumentException($messageType->getType() . ' is already registered');
     }
     $this->actionsToRun[$messageType->getType()] = $callback;
 }
 /**
  * @param MessageType $messageType
  *
  * @return Communicable
  * @throws \RuntimeException
  */
 public function create(MessageType $messageType)
 {
     $communicable = null;
     switch ($messageType->getType()) {
         case MessageType::PONG:
             $communicable = new Type\PongHandler();
             break;
         case MessageType::HEARTBEAT_REQUEST:
             $communicable = new Type\HeartBeatRequestHandler();
             break;
         case MessageType::READ_STREAM_EVENTS_FORWARD_COMPLETED:
             $communicable = new Type\ReadStreamEventsCompletedHandler();
             break;
         case MessageType::READ_ALL_EVENTS_FORWARD_COMPLETED:
             $communicable = new Type\ReadAllEventsCompletedHandler();
             break;
         case MessageType::READ_ALL_EVENTS_BACKWARD_COMPLETED:
             $communicable = new Type\ReadAllEventsCompletedHandler();
             break;
         case MessageType::SUBSCRIPTION_CONFIRMATION:
             $communicable = new Type\SubscriptionConfirmationHandler();
             break;
         case MessageType::SUBSCRIPTION_DROPPED:
             $communicable = new Type\SubscriptionDroppedHandler();
             break;
         case MessageType::PERSISTENT_SUBSCRIPTION_CONFIRMATION:
             $communicable = new Type\PersistentSubscriptionConfirmationHandler();
             break;
         case MessageType::PERSISTENT_SUBSCRIPTION_STREAM_EVENT_APPEARED:
             $communicable = new Type\PersistentSubscriptionStreamEventAppearedHandler();
             break;
         case MessageType::BAD_REQUEST:
             $communicable = new Type\BadRequestHandler();
             break;
         case MessageType::WRITE_EVENTS_COMPLETED:
             $communicable = new Type\WriteEventsCompletedHandler();
             break;
         case MessageType::STREAM_EVENT_APPEARED:
             $communicable = new Type\StreamEventAppearedHandler();
             break;
         case MessageType::NOT_AUTHENTICATED:
             $communicable = new Type\NotAuthenticatedHandler();
             break;
         default:
             throw new \RuntimeException('Unsupported message type ' . $messageType->getType());
     }
     return $communicable;
 }