Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class PacketUtils{
- /**
- * @param string $buffer
- * @return null|DataPacket
- */
- public static function readDataPacket(string $buffer) : ?DataPacket{
- if($buffer{0} === "\x84"){
- $dataPacket = new Datagram;
- $dataPacket->buffer = $buffer;
- $dataPacket->decode();
- self::$number = $dataPacket->seqNumber;
- foreach($dataPacket->packets as $encapsulatedPacket){
- /** @var BatchPacket $batch */
- if(($batch = PacketPool::getPacket($encapsulatedPacket->buffer)) instanceof BatchPacket){
- @$batch->decode();
- if($batch->payload !== "" && is_string($batch->payload)){
- foreach($batch->getPackets() as $buf){
- return PacketPool::getPacket($buf);
- }
- }
- }
- }
- }
- return null;
- }
- /**
- * @param DataPacket $packet
- * @param BaseHost $baseHost
- * @internal param int $seqNumber
- */
- public static function writeDataPacket(DataPacket $packet, BaseHost $baseHost) : void{
- $batch = new BatchPacket;
- $batch->addPacket($packet);
- $batch->setCompressionLevel(7);
- $batch->encode();
- $encapsulated = new EncapsulatedPacket;
- $encapsulated->reliability = 0;
- $encapsulated->buffer = $batch->buffer;
- $dataPacket = new Datagram;
- $dataPacket->seqNumber = self::$number++;
- $dataPacket->packets = [$encapsulated];
- $dataPacket->encode();
- $baseHost->writePacket($dataPacket->buffer);
- }
- }
Add Comment
Please, Sign In to add comment