diff --git a/src/network/mcpe/raklib/PthreadsChannelWriter.php b/src/network/mcpe/raklib/PthreadsChannelWriter.php index 580d774bb..8372dbf59 100644 --- a/src/network/mcpe/raklib/PthreadsChannelWriter.php +++ b/src/network/mcpe/raklib/PthreadsChannelWriter.php @@ -23,18 +23,12 @@ use raklib\server\ipc\InterThreadChannelWriter; final class PthreadsChannelWriter implements InterThreadChannelWriter{ /** @var \Threaded */ private $buffer; - /** @var SleeperNotifier|null */ - private $notifier; - public function __construct(\Threaded $buffer, ?SleeperNotifier $notifier = null){ + public function __construct(\Threaded $buffer){ $this->buffer = $buffer; - $this->notifier = $notifier; } public function write(string $str) : void{ $this->buffer[] = $str; - if($this->notifier !== null){ - $this->notifier->wakeupSleeper(); - } } } diff --git a/src/network/mcpe/raklib/RakLibServer.php b/src/network/mcpe/raklib/RakLibServer.php index e7f27c6cc..7591475ee 100644 --- a/src/network/mcpe/raklib/RakLibServer.php +++ b/src/network/mcpe/raklib/RakLibServer.php @@ -153,7 +153,7 @@ class RakLibServer extends Thread{ $this->maxMtuSize, new SimpleProtocolAcceptor($this->protocolVersion), new UserToRakLibThreadMessageReceiver(new PthreadsChannelReader($this->mainToThreadBuffer)), - new RakLibToUserThreadMessageSender(new PthreadsChannelWriter($this->threadToMainBuffer, $this->mainThreadNotifier)), + new RakLibToUserThreadMessageSender(new SnoozeAwarePthreadsChannelWriter($this->threadToMainBuffer, $this->mainThreadNotifier)), new ExceptionTraceCleaner($this->mainPath) ); $this->synchronized(function() : void{ diff --git a/src/network/mcpe/raklib/SnoozeAwarePthreadsChannelWriter.php b/src/network/mcpe/raklib/SnoozeAwarePthreadsChannelWriter.php new file mode 100644 index 000000000..2600c85e3 --- /dev/null +++ b/src/network/mcpe/raklib/SnoozeAwarePthreadsChannelWriter.php @@ -0,0 +1,42 @@ +buffer = $buffer; + $this->notifier = $notifier; + } + + public function write(string $str) : void{ + $this->buffer[] = $str; + $this->notifier->wakeupSleeper(); + } +}