mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-04-21 08:17:34 +00:00
Eliminate usages of BinaryStream->setBuffer() and BinaryStream->reset()
This commit is contained in:
parent
893f7cb6ef
commit
c618932d25
@ -55,6 +55,10 @@ abstract class DataPacket implements Packet{
|
||||
return $this->buf;
|
||||
}
|
||||
|
||||
public function setSerializer(PacketSerializer $serializer) : void{
|
||||
$this->buf = $serializer;
|
||||
}
|
||||
|
||||
public function pid() : int{
|
||||
return $this::NETWORK_ID;
|
||||
}
|
||||
@ -105,7 +109,7 @@ abstract class DataPacket implements Packet{
|
||||
abstract protected function decodePayload(PacketSerializer $in) : void;
|
||||
|
||||
final public function encode() : void{
|
||||
$this->buf->reset();
|
||||
$this->buf = new PacketSerializer();
|
||||
$this->encodeHeader($this->buf);
|
||||
$this->encodePayload($this->buf);
|
||||
}
|
||||
|
@ -29,6 +29,8 @@ interface Packet{
|
||||
|
||||
public function getSerializer() : PacketSerializer;
|
||||
|
||||
public function setSerializer(PacketSerializer $serializer) : void;
|
||||
|
||||
public function pid() : int;
|
||||
|
||||
public function getName() : string;
|
||||
|
@ -23,7 +23,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\utils\Binary;
|
||||
use pocketmine\network\mcpe\protocol\serializer\PacketSerializer;
|
||||
use pocketmine\utils\BinaryDataException;
|
||||
|
||||
class PacketPool{
|
||||
@ -199,9 +199,9 @@ class PacketPool{
|
||||
* @throws BinaryDataException
|
||||
*/
|
||||
public function getPacket(string $buffer) : Packet{
|
||||
$offset = 0;
|
||||
$pk = $this->getPacketById(Binary::readUnsignedVarInt($buffer, $offset) & DataPacket::PID_MASK);
|
||||
$pk->getSerializer()->setBuffer($buffer, $offset);
|
||||
$serializer = new PacketSerializer($buffer);
|
||||
$pk = $this->getPacketById($serializer->getUnsignedVarInt() & DataPacket::PID_MASK);
|
||||
$pk->setSerializer($serializer);
|
||||
|
||||
return $pk;
|
||||
}
|
||||
|
@ -240,8 +240,6 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{
|
||||
$chunkVersion = ord($chunkVersionRaw);
|
||||
$hasBeenUpgraded = $chunkVersion < self::CURRENT_LEVEL_CHUNK_VERSION;
|
||||
|
||||
$binaryStream = new BinaryStream();
|
||||
|
||||
switch($chunkVersion){
|
||||
case 15: //MCPE 1.12.0.4 beta (???)
|
||||
case 14: //MCPE 1.11.1.2 (???)
|
||||
@ -262,7 +260,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{
|
||||
continue;
|
||||
}
|
||||
|
||||
$binaryStream->setBuffer($data);
|
||||
$binaryStream = new BinaryStream($data);
|
||||
if($binaryStream->feof()){
|
||||
throw new CorruptedChunkException("Unexpected empty data for subchunk $y");
|
||||
}
|
||||
@ -324,7 +322,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{
|
||||
}
|
||||
|
||||
if(($maps2d = $this->db->get($index . self::TAG_DATA_2D)) !== false){
|
||||
$binaryStream->setBuffer($maps2d);
|
||||
$binaryStream = new BinaryStream($maps2d);
|
||||
|
||||
try{
|
||||
$binaryStream->get(512); //heightmap, discard it
|
||||
@ -343,7 +341,7 @@ class LevelDB extends BaseWorldProvider implements WritableWorldProvider{
|
||||
if($legacyTerrain === false){
|
||||
throw new CorruptedChunkException("Missing expected LEGACY_TERRAIN tag for format version $chunkVersion");
|
||||
}
|
||||
$binaryStream->setBuffer($legacyTerrain);
|
||||
$binaryStream = new BinaryStream($legacyTerrain);
|
||||
try{
|
||||
$fullIds = $binaryStream->get(32768);
|
||||
$fullData = $binaryStream->get(16384);
|
||||
|
@ -24,6 +24,7 @@ declare(strict_types=1);
|
||||
namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use pocketmine\network\mcpe\protocol\serializer\PacketSerializer;
|
||||
|
||||
class DataPacketTest extends TestCase{
|
||||
|
||||
@ -34,7 +35,7 @@ class DataPacketTest extends TestCase{
|
||||
$pk->encode();
|
||||
|
||||
$pk2 = new TestPacket();
|
||||
$pk2->getSerializer()->setBuffer($pk->getSerializer()->getBuffer());
|
||||
$pk2->setSerializer(new PacketSerializer($pk->getSerializer()->getBuffer()));
|
||||
$pk2->decode();
|
||||
self::assertSame($pk2->senderSubId, 3);
|
||||
self::assertSame($pk2->recipientSubId, 2);
|
||||
|
Loading…
x
Reference in New Issue
Block a user