mirror of
https://github.com/overte-org/overte.git
synced 2025-04-20 03:44:02 +02:00
edit nacks ready for test; seq numbers sometimes repeat??
This commit is contained in:
parent
e3db60d1ef
commit
06f8464ec9
3 changed files with 18 additions and 11 deletions
|
@ -194,8 +194,6 @@ void OctreeInboundPacketProcessor::trackInboundPacket(const QUuid& nodeUUID, uns
|
|||
|
||||
int OctreeInboundPacketProcessor::sendNackPackets() {
|
||||
|
||||
printf("\t\t sendNackPackets()\n");
|
||||
|
||||
int packetsSent = 0;
|
||||
|
||||
NodeToSenderStatsMapIterator i = _singleSenderStats.begin();
|
||||
|
@ -336,7 +334,9 @@ printf("\t\t tracked seq %d\n", incomingSequence);
|
|||
printf("\t\t\t packet is late!\n");
|
||||
|
||||
// remove this from missing sequence number if it's in there
|
||||
_missingSequenceNumbers.remove(incomingSequence);
|
||||
if (_missingSequenceNumbers.remove(incomingSequence)) {
|
||||
printf("\t\t\t\t packet %d recovered!!!\n", incomingSequence);
|
||||
}
|
||||
|
||||
// do not update _incomingLastSequence
|
||||
}
|
||||
|
|
|
@ -19,6 +19,12 @@ SentPacketHistory::SentPacketHistory(int size)
|
|||
}
|
||||
|
||||
void SentPacketHistory::packetSent(uint16_t sequenceNumber, const QByteArray& packet) {
|
||||
|
||||
if (sequenceNumber != 0 && sequenceNumber != _newestSequenceNumber + 1) {
|
||||
printf("\t packet history received unexpected seq number! prev: %d received: %d\n", _newestSequenceNumber, sequenceNumber);
|
||||
}
|
||||
|
||||
|
||||
_newestSequenceNumber = sequenceNumber;
|
||||
|
||||
// increment _newestPacketAt cyclically, insert new packet there.
|
||||
|
|
|
@ -97,6 +97,9 @@ void OctreeEditPacketSender::queuePacketToNode(const QUuid& nodeUUID, const unsi
|
|||
((node->getUUID() == nodeUUID) || (nodeUUID.isNull()))) {
|
||||
if (node->getActiveSocket()) {
|
||||
QByteArray packet(reinterpret_cast<const char*>(buffer), length);
|
||||
|
||||
bool send = randFloat() < 0.7f;
|
||||
if (send)
|
||||
queuePacketForSending(node, packet);
|
||||
|
||||
// extract sequence number and add packet to history
|
||||
|
@ -105,6 +108,10 @@ void OctreeEditPacketSender::queuePacketToNode(const QUuid& nodeUUID, const unsi
|
|||
unsigned short int sequence = (*((unsigned short int*)(dataAt + numBytesPacketHeader)));
|
||||
_sentPacketHistories[nodeUUID].packetSent(sequence, packet);
|
||||
|
||||
if (!send) {
|
||||
printf("\t\t dropped packet %d !!!\n", sequence);
|
||||
}
|
||||
|
||||
// debugging output...
|
||||
bool wantDebugging = false;
|
||||
if (wantDebugging) {
|
||||
|
@ -314,14 +321,7 @@ void OctreeEditPacketSender::initializePacket(EditPacketBuffer& packetBuffer, Pa
|
|||
unsigned short int* sequenceAt = (unsigned short int*)&packetBuffer._currentBuffer[packetBuffer._currentSize];
|
||||
*sequenceAt = _sequenceNumber;
|
||||
packetBuffer._currentSize += sizeof(unsigned short int); // nudge past sequence
|
||||
if (randFloat() < 0.6f)
|
||||
_sequenceNumber++;
|
||||
else
|
||||
{
|
||||
int x = randIntInRange(2, 4);
|
||||
printf("\t\t seq number jumped from %d to %d\n", _sequenceNumber, _sequenceNumber + x);
|
||||
_sequenceNumber += x;
|
||||
}
|
||||
|
||||
// pack in timestamp
|
||||
quint64 now = usecTimestampNow();
|
||||
|
@ -368,7 +368,8 @@ void OctreeEditPacketSender::processNackPacket(const QByteArray& packet) {
|
|||
// retrieve packet from history
|
||||
const QByteArray* packet = sentPacketHistory.getPacket(sequenceNumber);
|
||||
if (packet) {
|
||||
queuePacketToNode(sendingNodeUUID, (const unsigned char*)packet->constData(), packet->length());
|
||||
const SharedNodePointer& node = NodeList::getInstance()->getNodeHash().value(sendingNodeUUID);
|
||||
queuePacketForSending(node, *packet);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue