mirror of
https://github.com/overte-org/overte.git
synced 2025-08-05 06:49:41 +02:00
Use SeqNum
This commit is contained in:
parent
d4504ae6c8
commit
797f74f3d9
6 changed files with 13 additions and 16 deletions
|
@ -85,7 +85,7 @@ private:
|
|||
bool _canAdjustLocks;
|
||||
bool _canRez;
|
||||
|
||||
std::map<PacketType, udt::Packet::SequenceNumber> _lastSequenceNumbers;
|
||||
std::map<PacketType, udt::SeqNum> _lastSequenceNumbers;
|
||||
};
|
||||
|
||||
typedef QSharedPointer<Node> SharedNodePointer;
|
||||
|
|
|
@ -21,7 +21,7 @@ void UdtCC::init() {
|
|||
setAckTimer(_rcInterval);
|
||||
|
||||
_lastAck = _sendCurrSeqNum;
|
||||
_lastDecSeq = SeqNum::MAX;
|
||||
_lastDecSeq = SeqNum{ SeqNum::MAX };
|
||||
|
||||
_congestionWindowSize = 16.0;
|
||||
_packetSendPeriod = 1.0;
|
||||
|
|
|
@ -65,7 +65,7 @@ Packet::Packet(qint64 size, bool isReliable, bool isPartOfMessage) :
|
|||
adjustPayloadStartAndCapacity();
|
||||
|
||||
// set the UDT header to default values
|
||||
writeSequenceNumber(0);
|
||||
writeSequenceNumber(SeqNum());
|
||||
}
|
||||
|
||||
Packet::Packet(std::unique_ptr<char> data, qint64 size, const HifiSockAddr& senderSockAddr) :
|
||||
|
@ -142,18 +142,13 @@ void Packet::readIsPartOfMessage() {
|
|||
|
||||
void Packet::readSequenceNumber() {
|
||||
SequenceNumberAndBitField seqNumBitField = *reinterpret_cast<SequenceNumberAndBitField*>(_packet.get());
|
||||
_sequenceNumber = (seqNumBitField & ~BIT_FIELD_MASK); // Remove the bit field
|
||||
_sequenceNumber = SeqNum{ seqNumBitField & ~BIT_FIELD_MASK }; // Remove the bit field
|
||||
}
|
||||
|
||||
static const uint32_t MAX_SEQUENCE_NUMBER = UINT32_MAX >> BIT_FIELD_LENGTH;
|
||||
|
||||
void Packet::writeSequenceNumber(SequenceNumber sequenceNumber) {
|
||||
// make sure this is a sequence number <= 29 bit unsigned max (536,870,911)
|
||||
Q_ASSERT(sequenceNumber <= MAX_SEQUENCE_NUMBER);
|
||||
|
||||
void Packet::writeSequenceNumber(SeqNum seqNum) {
|
||||
// grab pointer to current SequenceNumberAndBitField
|
||||
SequenceNumberAndBitField* seqNumBitField = reinterpret_cast<SequenceNumberAndBitField*>(_packet.get());
|
||||
|
||||
// write new value by ORing (old value & BIT_FIELD_MASK) with new seqNum
|
||||
*seqNumBitField = (*seqNumBitField & BIT_FIELD_MASK) | sequenceNumber;
|
||||
*seqNumBitField = (*seqNumBitField & BIT_FIELD_MASK) | (SeqNum::Type)seqNum;
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
|
||||
#include "BasePacket.h"
|
||||
#include "PacketHeaders.h"
|
||||
#include "SeqNum.h"
|
||||
|
||||
namespace udt {
|
||||
|
||||
|
@ -50,7 +51,8 @@ public:
|
|||
|
||||
virtual qint64 totalHeadersSize() const; // Cumulated size of all the headers
|
||||
|
||||
void writeSequenceNumber(SequenceNumber sequenceNumber);
|
||||
void writeSequenceNumber(SeqNum seqNum);
|
||||
SeqNum getSequenceNumber() const { return _sequenceNumber; }
|
||||
|
||||
protected:
|
||||
Packet(qint64 size, bool isReliable = false, bool isPartOfMessage = false);
|
||||
|
@ -70,7 +72,7 @@ protected:
|
|||
|
||||
bool _isReliable { false };
|
||||
bool _isPartOfMessage { false };
|
||||
SequenceNumber _sequenceNumber { 0 };
|
||||
SeqNum _sequenceNumber;
|
||||
};
|
||||
|
||||
} // namespace udt
|
||||
|
|
|
@ -27,7 +27,7 @@ public:
|
|||
static const Type THRESHOLD = 0x0FFFFFFF; // threshold for comparing sequence numbers
|
||||
static const Type MAX = 0x1FFFFFFF; // maximum sequence number used in UDT
|
||||
|
||||
SeqNum() : _value(0) {}
|
||||
SeqNum() = default;
|
||||
SeqNum(const SeqNum& other) : _value(other._value) {}
|
||||
|
||||
// Only explicit conversions
|
||||
|
@ -79,7 +79,7 @@ public:
|
|||
friend int seqoff(const SeqNum& seq1, const SeqNum& seq2);
|
||||
|
||||
private:
|
||||
Type _value;
|
||||
Type _value { 0 };
|
||||
|
||||
friend struct std::hash<SeqNum>;
|
||||
};
|
||||
|
|
|
@ -64,7 +64,7 @@ private:
|
|||
|
||||
std::unordered_map<HifiSockAddr, BasePacketHandler> _unfilteredHandlers;
|
||||
|
||||
std::unordered_map<HifiSockAddr, Packet::SequenceNumber> _packetSequenceNumbers;
|
||||
std::unordered_map<HifiSockAddr, SeqNum> _packetSequenceNumbers;
|
||||
};
|
||||
|
||||
} // namespace udt
|
||||
|
|
Loading…
Reference in a new issue