diff --git a/src/network/mcpe/raklib/PthreadsChannelReader.php b/src/network/mcpe/raklib/PthreadsChannelReader.php new file mode 100644 index 000000000..4b32b0f38 --- /dev/null +++ b/src/network/mcpe/raklib/PthreadsChannelReader.php @@ -0,0 +1,39 @@ +buffer = $buffer; + } + + public function read() : ?string{ + return $this->buffer->shift(); + } +} diff --git a/src/network/mcpe/raklib/PthreadsChannelWriter.php b/src/network/mcpe/raklib/PthreadsChannelWriter.php new file mode 100644 index 000000000..580d774bb --- /dev/null +++ b/src/network/mcpe/raklib/PthreadsChannelWriter.php @@ -0,0 +1,40 @@ +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/RakLibInterface.php b/src/network/mcpe/raklib/RakLibInterface.php index 1f06f0168..8afba969e 100644 --- a/src/network/mcpe/raklib/RakLibInterface.php +++ b/src/network/mcpe/raklib/RakLibInterface.php @@ -35,8 +35,6 @@ use pocketmine\utils\Utils; use raklib\protocol\EncapsulatedPacket; use raklib\protocol\PacketReliability; use raklib\RakLib; -use raklib\server\ipc\InterThreadChannelReader; -use raklib\server\ipc\InterThreadChannelWriter; use raklib\server\ipc\RakLibToUserThreadMessageReceiver; use raklib\server\ipc\UserToRakLibThreadMessageSender; use raklib\server\ServerEventListener; @@ -104,10 +102,10 @@ class RakLibInterface implements ServerEventListener, AdvancedNetworkInterface{ ); $this->eventReceiver = new RakLibToUserThreadMessageReceiver( $this, - new InterThreadChannelReader($threadToMainBuffer) + new PthreadsChannelReader($threadToMainBuffer) ); $this->interface = new UserToRakLibThreadMessageSender( - new InterThreadChannelWriter($mainToThreadBuffer) + new PthreadsChannelWriter($mainToThreadBuffer) ); } diff --git a/src/network/mcpe/raklib/RakLibServer.php b/src/network/mcpe/raklib/RakLibServer.php index 67eb126da..d01175a43 100644 --- a/src/network/mcpe/raklib/RakLibServer.php +++ b/src/network/mcpe/raklib/RakLibServer.php @@ -27,8 +27,6 @@ use pocketmine\snooze\SleeperNotifier; use pocketmine\thread\Thread; use raklib\generic\Socket; use raklib\RakLib; -use raklib\server\ipc\InterThreadChannelReader; -use raklib\server\ipc\InterThreadChannelWriter; use raklib\server\ipc\RakLibToUserThreadMessageSender; use raklib\server\ipc\UserToRakLibThreadMessageReceiver; use raklib\server\SessionManager; @@ -161,8 +159,8 @@ class RakLibServer extends Thread{ $socket, $this->maxMtuSize, $this->protocolVersion, - new UserToRakLibThreadMessageReceiver(new InterThreadChannelReader($this->mainToThreadBuffer)), - new RakLibToUserThreadMessageSender(new InterThreadChannelWriter($this->threadToMainBuffer, $this->mainThreadNotifier)), + new UserToRakLibThreadMessageReceiver(new PthreadsChannelReader($this->mainToThreadBuffer)), + new RakLibToUserThreadMessageSender(new PthreadsChannelWriter($this->threadToMainBuffer, $this->mainThreadNotifier)), new ExceptionTraceCleaner($this->mainPath) ); $this->synchronized(function() : void{