public function addEncapsulatedToQueue(EncapsulatedPacket $packet, $flags = RakLib::PRIORITY_NORMAL)
{
if (($packet->needACK = ($flags & RakLib::FLAG_NEED_ACK) > 0) === true) {
$this->needACK[$packet->identifierACK] = [];
}
if ($packet->reliability === PacketReliability::RELIABLE or $packet->reliability === PacketReliability::RELIABLE_ORDERED or $packet->reliability === PacketReliability::RELIABLE_SEQUENCED or $packet->reliability === PacketReliability::RELIABLE_WITH_ACK_RECEIPT or $packet->reliability === PacketReliability::RELIABLE_ORDERED_WITH_ACK_RECEIPT) {
$packet->messageIndex = $this->messageIndex++;
if ($packet->reliability === PacketReliability::RELIABLE_ORDERED) {
$packet->orderIndex = $this->channelIndex[$packet->orderChannel]++;
}
}
if ($packet->getTotalLength() + 4 > $this->mtuSize) {
$buffers = str_split($packet->buffer, $this->mtuSize - 34);
$splitID = ++$this->splitID % 65536;
foreach ($buffers as $count => $buffer) {
$pk = new EncapsulatedPacket();
$pk->splitID = $splitID;
$pk->hasSplit = true;
$pk->splitCount = count($buffers);
$pk->reliability = $packet->reliability;
$pk->splitIndex = $count;
$pk->buffer = $buffer;
if ($count > 0) {
$pk->messageIndex = $this->messageIndex++;
} else {
$pk->messageIndex = $packet->messageIndex;
}
if ($pk->reliability === PacketReliability::RELIABLE_ORDERED) {
$pk->orderChannel = $packet->orderChannel;
$pk->orderIndex = $packet->orderIndex;
}
$this->addToQueue($pk, $flags | RakLib::PRIORITY_IMMEDIATE);
}
} else {
$this->addToQueue($packet, $flags);
}
}