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