From 797f74f3d94699759bb8f888cb32eb49165ea9f2 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Fri, 24 Jul 2015 12:27:40 -0700 Subject: [PATCH] Use SeqNum --- libraries/networking/src/Node.h | 2 +- libraries/networking/src/udt/CongestionControl.cpp | 2 +- libraries/networking/src/udt/Packet.cpp | 13 ++++--------- libraries/networking/src/udt/Packet.h | 6 ++++-- libraries/networking/src/udt/SeqNum.h | 4 ++-- libraries/networking/src/udt/Socket.h | 2 +- 6 files changed, 13 insertions(+), 16 deletions(-) diff --git a/libraries/networking/src/Node.h b/libraries/networking/src/Node.h index 178146c948..411e9982c5 100644 --- a/libraries/networking/src/Node.h +++ b/libraries/networking/src/Node.h @@ -85,7 +85,7 @@ private: bool _canAdjustLocks; bool _canRez; - std::map _lastSequenceNumbers; + std::map _lastSequenceNumbers; }; typedef QSharedPointer SharedNodePointer; diff --git a/libraries/networking/src/udt/CongestionControl.cpp b/libraries/networking/src/udt/CongestionControl.cpp index 75ebc0929c..fbb172ecee 100644 --- a/libraries/networking/src/udt/CongestionControl.cpp +++ b/libraries/networking/src/udt/CongestionControl.cpp @@ -21,7 +21,7 @@ void UdtCC::init() { setAckTimer(_rcInterval); _lastAck = _sendCurrSeqNum; - _lastDecSeq = SeqNum::MAX; + _lastDecSeq = SeqNum{ SeqNum::MAX }; _congestionWindowSize = 16.0; _packetSendPeriod = 1.0; diff --git a/libraries/networking/src/udt/Packet.cpp b/libraries/networking/src/udt/Packet.cpp index 47ea6ffef3..ebfea3742e 100644 --- a/libraries/networking/src/udt/Packet.cpp +++ b/libraries/networking/src/udt/Packet.cpp @@ -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 data, qint64 size, const HifiSockAddr& senderSockAddr) : @@ -142,18 +142,13 @@ void Packet::readIsPartOfMessage() { void Packet::readSequenceNumber() { SequenceNumberAndBitField seqNumBitField = *reinterpret_cast(_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(_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; } diff --git a/libraries/networking/src/udt/Packet.h b/libraries/networking/src/udt/Packet.h index 39770bb022..51f66e0dab 100644 --- a/libraries/networking/src/udt/Packet.h +++ b/libraries/networking/src/udt/Packet.h @@ -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 diff --git a/libraries/networking/src/udt/SeqNum.h b/libraries/networking/src/udt/SeqNum.h index ad5a6c7c21..b73f5fa23c 100644 --- a/libraries/networking/src/udt/SeqNum.h +++ b/libraries/networking/src/udt/SeqNum.h @@ -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; }; diff --git a/libraries/networking/src/udt/Socket.h b/libraries/networking/src/udt/Socket.h index 68985133ac..8c8b4b4883 100644 --- a/libraries/networking/src/udt/Socket.h +++ b/libraries/networking/src/udt/Socket.h @@ -64,7 +64,7 @@ private: std::unordered_map _unfilteredHandlers; - std::unordered_map _packetSequenceNumbers; + std::unordered_map _packetSequenceNumbers; }; } // namespace udt