/**
  * @param string       $eventName
  * @param DefaultEvent $event
  * @param bool         $async
  * @param int          $ttl
  *
  * @return DefaultEvent
  */
 public function dispatch($eventName, DefaultEvent $event = null, $async = false, $ttl = 0)
 {
     if (null === $event) {
         $event = new DefaultEvent();
     }
     $serializedEvent = serialize($event);
     //$this->redisPublish($eventName, $async, $serializedEvent);
     $this->debugEvent($eventName, $event, $async, $ttl);
     if (!isset($this->listeners[$eventName])) {
         return $event;
     }
     if ($async) {
         $this->queue->addJob(WorkerEnum::getQueue(WorkerEnum::EVENTS), UUID::v4(), ['eventName' => $eventName, 'serializedEvent' => $serializedEvent], null, $ttl);
     } else {
         $this->doDispatch($this->getListeners($eventName), $eventName, $event);
     }
     return $event;
 }
Example #2
0
 /**
  * @param DefaultEvent $event
  */
 public function websocketPublisher(Debug $event)
 {
     $this->boomerApi->sendMessageViaStaticChannel(ChannelEnum::DEBUG_EVENTS, array_merge(['ts' => time(), 'id' => UUID::v4(), 'action' => (string) $event], $event->jsonSerialize()));
 }
 /**
  * @param Session $session
  */
 public function save(Session $session)
 {
     $redisId = $this->buildKey($session->getSid());
     if ($session->shouldKill()) {
         $this->redis->del($redisId);
     } else {
         $this->redis->transaction(function (MultiExec $tx) use($session, $redisId) {
             foreach ($session->getDeletedKeys() as $key) {
                 $tx->hdel($redisId, $key);
             }
             $changes = $session->getChanges();
             if (count($changes) > 0) {
                 $tx->hmset($redisId, $session->getChanges());
             }
             if ($session->shouldRegenerate()) {
                 $session->setSid(UUID::v4());
                 $newRedisId = $this->buildKey($session->getSid());
                 $tx->rename($redisId, $newRedisId);
                 $redisId = $newRedisId;
             }
             $tx->expire($redisId, $this->getExpires());
         });
     }
 }