Added a PacketBroadcaster interface

this gives a bit more control over how packets are broadcasted, which might be useful if the batch format changes (e.g. adding a length prefix) for multi version.
This really ought to be unique to a protocol context instead of a network interface, but for now this is the best we can do.
This commit is contained in:
Dylan K. Taylor
2020-12-02 16:34:14 +00:00
parent 6001f69d52
commit 687ad28fa6
5 changed files with 131 additions and 26 deletions

View File

@@ -177,16 +177,20 @@ class NetworkSession{
/** @var PacketSender */
private $sender;
/** @var PacketBroadcaster */
private $broadcaster;
/**
* @var \Closure[]|Set
* @phpstan-var Set<\Closure() : void>
*/
private $disposeHooks;
public function __construct(Server $server, NetworkSessionManager $manager, PacketPool $packetPool, PacketSender $sender, Compressor $compressor, string $ip, int $port){
public function __construct(Server $server, NetworkSessionManager $manager, PacketPool $packetPool, PacketSender $sender, PacketBroadcaster $broadcaster, Compressor $compressor, string $ip, int $port){
$this->server = $server;
$this->manager = $manager;
$this->sender = $sender;
$this->broadcaster = $broadcaster;
$this->ip = $ip;
$this->port = $port;
@@ -449,6 +453,8 @@ class NetworkSession{
}
}
public function getBroadcaster() : PacketBroadcaster{ return $this->broadcaster; }
public function getCompressor() : Compressor{
return $this->compressor;
}