handlers = new SplObjectStorage(); } public function initialize(): void { $this->handlers[Header::ReleaseVersion] = new ReleaseVersionMessageEvent(); $this->handlers[Header::SecurityTicket] = new SecurityTicketMessageEvent(); Logger::info("Loaded " . count($this->handlers) . " message handlers"); } public function handlePacket(Session $session, ClientMessage $request): void { if (($header = Header::tryFrom($request->getHeader()))) { if ($this->handlers->contains($header)) { $this->handlers[$header]->handle($session, $request); } else { Logger::warn("[{$request->getHeader()}] [$header->name] - Unregistered!"); } } else { Logger::warn("[{$request->getHeader()}] - Unregistered!"); } } }