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