<?php
namespace Core\Map;
use Socket;
class StreamMap
{
public static array $streams = [];
public static array $streamHashMap = [];
public static int $count = 0;
public static function addStreamSocket(mixed $stream): int
{
$streamId = intval($stream);
$socket = socket_import_stream($stream);
$hash = spl_object_hash($socket);
SocketMap::addSocket($socket, $streamId);
StreamMap::$streamHashMap[$hash] = $stream;
StreamMap::$streams[$streamId] = $stream;
StreamMap::$count++;
return $streamId;
}
public static function removeStreamSocket(mixed $stream): int
{
$streamId = intval($stream);
if ($socketHash = SocketMap::removeSocketByStreamId($streamId)) {
unset(StreamMap::$streamHashMap[$socketHash]);
}
unset(StreamMap::$streams[$streamId]);
StreamMap::$count--;
return $streamId;
}
public static function getStreamBySocket(Socket $socket)
{
return StreamMap::getStreamByHash(spl_object_hash($socket));
}
public static function getStreamByHash(string $hash)
{
return StreamMap::$streamHashMap[$hash] ?? null;
}
}