mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-09-09 19:24:12 +00:00
this will be useful for preventing resource pack sending from overloading the network. it's not the best solution for that (since it means the RTT will limit the pack download speed), but it's easier than implementing congestion control and will work fine in most cases.
49 lines
1.3 KiB
PHP
49 lines
1.3 KiB
PHP
<?php
|
|
|
|
/*
|
|
*
|
|
* ____ _ _ __ __ _ __ __ ____
|
|
* | _ \ ___ ___| | _____| |_| \/ (_)_ __ ___ | \/ | _ \
|
|
* | |_) / _ \ / __| |/ / _ \ __| |\/| | | '_ \ / _ \_____| |\/| | |_) |
|
|
* | __/ (_) | (__| < __/ |_| | | | | | | | __/_____| | | | __/
|
|
* |_| \___/ \___|_|\_\___|\__|_| |_|_|_| |_|\___| |_| |_|_|
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Lesser General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* @author PocketMine Team
|
|
* @link http://www.pocketmine.net/
|
|
*
|
|
*
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace pocketmine\network\mcpe\raklib;
|
|
|
|
use pocketmine\network\mcpe\PacketSender;
|
|
|
|
class RakLibPacketSender implements PacketSender{
|
|
private bool $closed = false;
|
|
|
|
public function __construct(
|
|
private int $sessionId,
|
|
private RakLibInterface $handler
|
|
){}
|
|
|
|
public function send(string $payload, bool $immediate, ?int $receiptId) : void{
|
|
if(!$this->closed){
|
|
$this->handler->putPacket($this->sessionId, $payload, $immediate, $receiptId);
|
|
}
|
|
}
|
|
|
|
public function close(string $reason = "unknown reason") : void{
|
|
if(!$this->closed){
|
|
$this->closed = true;
|
|
$this->handler->close($this->sessionId);
|
|
}
|
|
}
|
|
}
|