mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 12:49:34 +02:00
change to new packet sending in Application
This commit is contained in:
parent
edf7a96b58
commit
e05470a11c
1 changed files with 43 additions and 55 deletions
|
@ -2661,7 +2661,8 @@ int Application::sendNackPackets() {
|
||||||
}
|
}
|
||||||
|
|
||||||
int packetsSent = 0;
|
int packetsSent = 0;
|
||||||
char packet[MAX_PACKET_SIZE];
|
|
||||||
|
auto nackPacket { NLPacket::create(PacketType::OctreeDataNack); }
|
||||||
|
|
||||||
// iterates thru all nodes in NodeList
|
// iterates thru all nodes in NodeList
|
||||||
auto nodeList = DependencyManager::get<NodeList>();
|
auto nodeList = DependencyManager::get<NodeList>();
|
||||||
|
@ -2698,33 +2699,26 @@ int Application::sendNackPackets() {
|
||||||
QSet<OCTREE_PACKET_SEQUENCE>::const_iterator missingSequenceNumbersIterator = missingSequenceNumbers.constBegin();
|
QSet<OCTREE_PACKET_SEQUENCE>::const_iterator missingSequenceNumbersIterator = missingSequenceNumbers.constBegin();
|
||||||
while (numSequenceNumbersAvailable > 0) {
|
while (numSequenceNumbersAvailable > 0) {
|
||||||
|
|
||||||
char* dataAt = packet;
|
// reset the position we are writing at and the size we have used
|
||||||
int bytesRemaining = MAX_PACKET_SIZE;
|
nackPacket->seek(0);
|
||||||
|
nackPacket->setSizeUsed(0);
|
||||||
// pack header
|
|
||||||
int numBytesPacketHeader = nodeList->populatePacketHeader(packet, PacketTypeOctreeDataNack);
|
|
||||||
dataAt += numBytesPacketHeader;
|
|
||||||
bytesRemaining -= numBytesPacketHeader;
|
|
||||||
|
|
||||||
// calculate and pack the number of sequence numbers
|
// calculate and pack the number of sequence numbers
|
||||||
int numSequenceNumbersRoomFor = (bytesRemaining - sizeof(uint16_t)) / sizeof(OCTREE_PACKET_SEQUENCE);
|
int numSequenceNumbersRoomFor = (nackPacket->size() - sizeof(uint16_t)) / sizeof(OCTREE_PACKET_SEQUENCE);
|
||||||
uint16_t numSequenceNumbers = min(numSequenceNumbersAvailable, numSequenceNumbersRoomFor);
|
uint16_t numSequenceNumbers = min(numSequenceNumbersAvailable, numSequenceNumbersRoomFor);
|
||||||
uint16_t* numSequenceNumbersAt = (uint16_t*)dataAt;
|
|
||||||
*numSequenceNumbersAt = numSequenceNumbers;
|
nackPacket->write(&numSequenceNumbers, sizeof(numSequenceNumbers));
|
||||||
dataAt += sizeof(uint16_t);
|
|
||||||
|
|
||||||
// pack sequence numbers
|
// pack sequence numbers
|
||||||
for (int i = 0; i < numSequenceNumbers; i++) {
|
for (int i = 0; i < numSequenceNumbers; i++) {
|
||||||
OCTREE_PACKET_SEQUENCE* sequenceNumberAt = (OCTREE_PACKET_SEQUENCE*)dataAt;
|
OCTREE_PACKET_SEQUENCE missingNumber = *missingSequenceNumbersIterator;
|
||||||
*sequenceNumberAt = *missingSequenceNumbersIterator;
|
nackPacket->write(&missingNumber, sizeof(OCTREE_PACKET_SEQUENCE));
|
||||||
dataAt += sizeof(OCTREE_PACKET_SEQUENCE);
|
|
||||||
|
|
||||||
missingSequenceNumbersIterator++;
|
missingSequenceNumbersIterator++;
|
||||||
}
|
}
|
||||||
numSequenceNumbersAvailable -= numSequenceNumbers;
|
numSequenceNumbersAvailable -= numSequenceNumbers;
|
||||||
|
|
||||||
// send it
|
// send the packet
|
||||||
nodeList->writeUnverifiedDatagram(packet, dataAt - packet, node);
|
nodeList->sendUnreliablePacket(packet, node);
|
||||||
packetsSent++;
|
packetsSent++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2756,9 +2750,7 @@ void Application::queryOctree(NodeType_t serverType, PacketType::Value packetTyp
|
||||||
_octreeQuery.setOctreeSizeScale(lodManager->getOctreeSizeScale());
|
_octreeQuery.setOctreeSizeScale(lodManager->getOctreeSizeScale());
|
||||||
_octreeQuery.setBoundaryLevelAdjust(lodManager->getBoundaryLevelAdjust());
|
_octreeQuery.setBoundaryLevelAdjust(lodManager->getBoundaryLevelAdjust());
|
||||||
|
|
||||||
unsigned char queryPacket[MAX_PACKET_SIZE];
|
// Iterate all of the nodes, and get a count of how many octree servers we have...
|
||||||
|
|
||||||
// Iterate all of the nodes, and get a count of how many voxel servers we have...
|
|
||||||
int totalServers = 0;
|
int totalServers = 0;
|
||||||
int inViewServers = 0;
|
int inViewServers = 0;
|
||||||
int unknownJurisdictionServers = 0;
|
int unknownJurisdictionServers = 0;
|
||||||
|
@ -2825,6 +2817,8 @@ void Application::queryOctree(NodeType_t serverType, PacketType::Value packetTyp
|
||||||
qCDebug(interfaceapp, "perServerPPS: %d perUnknownServer: %d", perServerPPS, perUnknownServer);
|
qCDebug(interfaceapp, "perServerPPS: %d perUnknownServer: %d", perServerPPS, perUnknownServer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto queryPacket { NLPacket::create(packetType); }
|
||||||
|
|
||||||
nodeList->eachNode([&](const SharedNodePointer& node){
|
nodeList->eachNode([&](const SharedNodePointer& node){
|
||||||
// only send to the NodeTypes that are serverType
|
// only send to the NodeTypes that are serverType
|
||||||
if (node->getActiveSocket() && node->getType() == serverType) {
|
if (node->getActiveSocket() && node->getType() == serverType) {
|
||||||
|
@ -2899,19 +2893,13 @@ void Application::queryOctree(NodeType_t serverType, PacketType::Value packetTyp
|
||||||
} else {
|
} else {
|
||||||
_octreeQuery.setMaxQueryPacketsPerSecond(0);
|
_octreeQuery.setMaxQueryPacketsPerSecond(0);
|
||||||
}
|
}
|
||||||
// set up the packet for sending...
|
|
||||||
unsigned char* endOfQueryPacket = queryPacket;
|
|
||||||
|
|
||||||
// insert packet type/version and node UUID
|
// encode the query data
|
||||||
endOfQueryPacket += nodeList->populatePacketHeader(reinterpret_cast<char*>(endOfQueryPacket), packetType);
|
int packetSize = _octreeQuery.getBroadcastData(queryPacket.payload());
|
||||||
|
queryPacket.setSizeUsed(packetSize);
|
||||||
// encode the query data...
|
|
||||||
endOfQueryPacket += _octreeQuery.getBroadcastData(endOfQueryPacket);
|
|
||||||
|
|
||||||
int packetLength = endOfQueryPacket - queryPacket;
|
|
||||||
|
|
||||||
// make sure we still have an active socket
|
// make sure we still have an active socket
|
||||||
nodeList->writeUnverifiedDatagram(reinterpret_cast<const char*>(queryPacket), packetLength, node);
|
nodeList->sendUnreliablePacket(queryPacket, node);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue