From 366968722f69af9073b43bca1a52133077d9822c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 13 Nov 2023 10:50:33 +0000 Subject: [PATCH] CompressorWorker: isolate thread body inside static function this prevents accidental access to shared properties, which would cost performance. --- src/network/mcpe/compression/CompressorWorker.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/network/mcpe/compression/CompressorWorker.php b/src/network/mcpe/compression/CompressorWorker.php index b85dedec42..3c419d2566 100644 --- a/src/network/mcpe/compression/CompressorWorker.php +++ b/src/network/mcpe/compression/CompressorWorker.php @@ -26,6 +26,7 @@ namespace pocketmine\network\mcpe\compression; use pmmp\thread\ThreadSafeArray; use pocketmine\snooze\SleeperHandler; use pocketmine\snooze\SleeperHandlerEntry; +use pocketmine\snooze\SleeperNotifier; use pocketmine\thread\Thread; use pocketmine\utils\AssumptionFailedError; use function count; @@ -82,10 +83,14 @@ final class CompressorWorker{ public function onRun() : void{ /** @var Compressor $compressor */ $compressor = unserialize($this->compressor); - $inChannel = $this->inChannel; - $outChannel = $this->outChannel; - $sleeperNotifier = $this->sleeperEntry->createNotifier(); + self::thread($this->inChannel, $compressor, $this->outChannel, $this->sleeperEntry->createNotifier()); + } + /** + * @phpstan-param ThreadSafeArray $inChannel + * @phpstan-param ThreadSafeArray $outChannel + */ + private static function thread(ThreadSafeArray $inChannel, Compressor $compressor, ThreadSafeArray $outChannel, SleeperNotifier $sleeperNotifier) : void{ $shutdown = false; while(!$shutdown){