HabboPHP/src/Emulator/Messages/MessageHandler.php

38 lines
1.3 KiB
PHP

<?php
namespace Emulator\Messages;
use Emulator\Core\Logging\Logger;
use Emulator\Messages\Incoming\ClientMessage;
use Emulator\Messages\Incoming\Handshake\ReleaseVersionMessageEvent;
use Emulator\Messages\Incoming\Handshake\SecurityTicketMessageEvent;
use Emulator\Messages\Incoming\Header;
use Emulator\Network\Game\Sessions\Session;
use SplObjectStorage;
class MessageHandler {
private SplObjectStorage $handlers;
public function __construct() {
$this->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!");
}
}
}