/** * @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; }
/** * @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()); }); } }