From ce61c6e0fdaf053084161e620769340885174f19 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 6 May 2019 19:54:42 +0100 Subject: [PATCH] PacketStream: added fromPackets() sugar --- src/pocketmine/Server.php | 5 +---- src/pocketmine/inventory/CraftingManager.php | 5 +---- src/pocketmine/network/mcpe/ChunkRequestTask.php | 5 +---- src/pocketmine/network/mcpe/PacketStream.php | 15 +++++++++++++++ 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/pocketmine/Server.php b/src/pocketmine/Server.php index ee6885b8b..531657d19 100644 --- a/src/pocketmine/Server.php +++ b/src/pocketmine/Server.php @@ -1492,10 +1492,7 @@ class Server{ } $recipients = $ev->getTargets(); - $stream = new PacketStream(); - foreach($ev->getPackets() as $packet){ - $stream->putPacket($packet); - } + $stream = PacketStream::fromPackets(...$ev->getPackets()); if(NetworkCompression::$THRESHOLD < 0 or strlen($stream->getBuffer()) < NetworkCompression::$THRESHOLD){ foreach($recipients as $target){ diff --git a/src/pocketmine/inventory/CraftingManager.php b/src/pocketmine/inventory/CraftingManager.php index f769990b9..79aa26799 100644 --- a/src/pocketmine/inventory/CraftingManager.php +++ b/src/pocketmine/inventory/CraftingManager.php @@ -115,11 +115,8 @@ class CraftingManager{ $pk->addFurnaceRecipe($recipe); } - $batch = new PacketStream(); - $batch->putPacket($pk); - $this->craftingDataCache = new CompressBatchPromise(); - $this->craftingDataCache->resolve(NetworkCompression::compress($batch->getBuffer())); + $this->craftingDataCache->resolve(NetworkCompression::compress(PacketStream::fromPackets($pk)->getBuffer())); Timings::$craftingDataCacheRebuildTimer->stopTiming(); } diff --git a/src/pocketmine/network/mcpe/ChunkRequestTask.php b/src/pocketmine/network/mcpe/ChunkRequestTask.php index 2d07e0b61..097e300cc 100644 --- a/src/pocketmine/network/mcpe/ChunkRequestTask.php +++ b/src/pocketmine/network/mcpe/ChunkRequestTask.php @@ -57,10 +57,7 @@ class ChunkRequestTask extends AsyncTask{ $pk->chunkZ = $this->chunkZ; $pk->data = $this->chunk; - $stream = new PacketStream(); - $stream->putPacket($pk); - - $this->setResult(NetworkCompression::compress($stream->getBuffer(), $this->compressionLevel)); + $this->setResult(NetworkCompression::compress(PacketStream::fromPackets($pk)->getBuffer(), $this->compressionLevel)); } public function onError() : void{ diff --git a/src/pocketmine/network/mcpe/PacketStream.php b/src/pocketmine/network/mcpe/PacketStream.php index ece641510..df3cfae2d 100644 --- a/src/pocketmine/network/mcpe/PacketStream.php +++ b/src/pocketmine/network/mcpe/PacketStream.php @@ -43,4 +43,19 @@ class PacketStream extends NetworkBinaryStream{ public function getPacket() : Packet{ return PacketPool::getPacket($this->getString()); } + + /** + * Constructs a packet batch from the given list of packets. + * + * @param Packet ...$packets + * + * @return PacketStream + */ + public static function fromPackets(Packet ...$packets) : self{ + $result = new self(); + foreach($packets as $packet){ + $result->putPacket($packet); + } + return $result; + } }