Eliminate usages of BinaryStream->setBuffer() and BinaryStream->reset()

This commit is contained in:
Dylan K. Taylor
2020-06-17 13:49:43 +01:00
parent 893f7cb6ef
commit c618932d25
5 changed files with 16 additions and 11 deletions

View File

@@ -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);
}

View File

@@ -29,6 +29,8 @@ interface Packet{
public function getSerializer() : PacketSerializer;
public function setSerializer(PacketSerializer $serializer) : void;
public function pid() : int;
public function getName() : string;

View File

@@ -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;
}