/** * @param EncapsulatedPacket $pk * @param int $flags */ private function addToQueue(EncapsulatedPacket $pk, $flags = RakLib::PRIORITY_NORMAL) { $priority = $flags & 0b111; if ($pk->needACK and $pk->messageIndex !== \null) { $this->needACK[$pk->identifierACK][$pk->messageIndex] = $pk->messageIndex; } if ($priority === RakLib::PRIORITY_IMMEDIATE) { //Skip queues $packet = new DATA_PACKET_0(); $packet->seqNumber = $this->sendSeqNumber++; if ($pk->needACK) { $packet->packets[] = clone $pk; $pk->needACK = \false; } else { $packet->packets[] = $pk->toBinary(); } $this->sendPacket($packet); $packet->sendTime = \microtime(\true); $this->recoveryQueue[$packet->seqNumber] = $packet; return; } $length = $this->sendQueue->length(); if ($length + $pk->getTotalLength() > $this->mtuSize) { $this->sendQueue(); } if ($pk->needACK) { $this->sendQueue->packets[] = clone $pk; $pk->needACK = \false; } else { $this->sendQueue->packets[] = $pk->toBinary(); } }