38 lines
1.3 KiB
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!");
|
|
}
|
|
}
|
|
} |