Guest User

Untitled

a guest
Feb 23rd, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.32 KB | None | 0 0
  1. <?php
  2.  
  3. class PacketUtils{
  4. /**
  5. * @param string $buffer
  6. * @return null|DataPacket
  7. */
  8. public static function readDataPacket(string $buffer) : ?DataPacket{
  9. if($buffer{0} === "\x84"){
  10. $dataPacket = new Datagram;
  11. $dataPacket->buffer = $buffer;
  12. $dataPacket->decode();
  13. self::$number = $dataPacket->seqNumber;
  14. foreach($dataPacket->packets as $encapsulatedPacket){
  15. /** @var BatchPacket $batch */
  16. if(($batch = PacketPool::getPacket($encapsulatedPacket->buffer)) instanceof BatchPacket){
  17. @$batch->decode();
  18. if($batch->payload !== "" && is_string($batch->payload)){
  19. foreach($batch->getPackets() as $buf){
  20. return PacketPool::getPacket($buf);
  21. }
  22. }
  23. }
  24. }
  25. }
  26. return null;
  27. }
  28.  
  29. /**
  30. * @param DataPacket $packet
  31. * @param BaseHost $baseHost
  32. * @internal param int $seqNumber
  33. */
  34. public static function writeDataPacket(DataPacket $packet, BaseHost $baseHost) : void{
  35. $batch = new BatchPacket;
  36. $batch->addPacket($packet);
  37. $batch->setCompressionLevel(7);
  38. $batch->encode();
  39. $encapsulated = new EncapsulatedPacket;
  40. $encapsulated->reliability = 0;
  41. $encapsulated->buffer = $batch->buffer;
  42. $dataPacket = new Datagram;
  43. $dataPacket->seqNumber = self::$number++;
  44. $dataPacket->packets = [$encapsulated];
  45. $dataPacket->encode();
  46. $baseHost->writePacket($dataPacket->buffer);
  47. }
  48. }
Add Comment
Please, Sign In to add comment