private function handleSplit(EncapsulatedPacket $packet)
{
if ($packet->splitCount >= self::MAX_SPLIT_SIZE or $packet->splitIndex >= self::MAX_SPLIT_SIZE or $packet->splitIndex < 0) {
return;
}
if (!isset($this->splitPackets[$packet->splitID])) {
if (count($this->splitPackets) >= self::MAX_SPLIT_COUNT) {
return;
}
$this->splitPackets[$packet->splitID] = [$packet->splitIndex => $packet];
} else {
$this->splitPackets[$packet->splitID][$packet->splitIndex] = $packet;
}
if (count($this->splitPackets[$packet->splitID]) === $packet->splitCount) {
$pk = new EncapsulatedPacket();
$pk->buffer = "";
for ($i = 0; $i < $packet->splitCount; ++$i) {
$pk->buffer .= $this->splitPackets[$packet->splitID][$i]->buffer;
}
$pk->length = strlen($pk->buffer);
unset($this->splitPackets[$packet->splitID]);
$this->handleEncapsulatedPacketRoute($pk);
}
}