mirror of
https://github.com/lubosz/overte.git
synced 2025-08-12 17:24:01 +02:00
Implement Packet::setSequenceNumber
This commit is contained in:
parent
71004ef519
commit
ca99699674
3 changed files with 8 additions and 2 deletions
|
@ -112,6 +112,11 @@ Packet& Packet::operator=(Packet&& other) {
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Packet::setSequenceNumber(SequenceNumber sequenceNumber) {
|
||||||
|
_sequenceNumber = sequenceNumber;
|
||||||
|
writeHeader();
|
||||||
|
}
|
||||||
|
|
||||||
static const uint32_t CONTROL_BIT_MASK = 1 << (sizeof(Packet::SequenceNumberAndBitField) - 1);
|
static const uint32_t CONTROL_BIT_MASK = 1 << (sizeof(Packet::SequenceNumberAndBitField) - 1);
|
||||||
static const uint32_t RELIABILITY_BIT_MASK = 1 << (sizeof(Packet::SequenceNumberAndBitField) - 2);
|
static const uint32_t RELIABILITY_BIT_MASK = 1 << (sizeof(Packet::SequenceNumberAndBitField) - 2);
|
||||||
static const uint32_t MESSAGE_BIT_MASK = 1 << (sizeof(Packet::SequenceNumberAndBitField) - 3);
|
static const uint32_t MESSAGE_BIT_MASK = 1 << (sizeof(Packet::SequenceNumberAndBitField) - 3);
|
||||||
|
@ -130,6 +135,7 @@ void Packet::writeHeader() {
|
||||||
// grab pointer to current SequenceNumberAndBitField
|
// grab pointer to current SequenceNumberAndBitField
|
||||||
SequenceNumberAndBitField* seqNumBitField = reinterpret_cast<SequenceNumberAndBitField*>(_packet.get());
|
SequenceNumberAndBitField* seqNumBitField = reinterpret_cast<SequenceNumberAndBitField*>(_packet.get());
|
||||||
|
|
||||||
|
// 0 for data packets
|
||||||
*seqNumBitField &= ~CONTROL_BIT_MASK;
|
*seqNumBitField &= ~CONTROL_BIT_MASK;
|
||||||
|
|
||||||
if (_isPartOfMessage) {
|
if (_isPartOfMessage) {
|
||||||
|
|
|
@ -52,7 +52,7 @@ public:
|
||||||
bool isReliable() const { return _isReliable; }
|
bool isReliable() const { return _isReliable; }
|
||||||
SequenceNumber getSequenceNumber() const { return _sequenceNumber; }
|
SequenceNumber getSequenceNumber() const { return _sequenceNumber; }
|
||||||
|
|
||||||
void setSequenceNumber();
|
void setSequenceNumber(SequenceNumber sequenceNumber);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Packet(qint64 size, bool isReliable = false, bool isPartOfMessage = false);
|
Packet(qint64 size, bool isReliable = false, bool isPartOfMessage = false);
|
||||||
|
|
|
@ -131,7 +131,7 @@ void SendQueue::sendNextPacket() {
|
||||||
_lastSendTimestamp = sendTime;
|
_lastSendTimestamp = sendTime;
|
||||||
|
|
||||||
if (_nextPacket) {
|
if (_nextPacket) {
|
||||||
_nextPacket->writeSequenceNumber(++_currentSequenceNumber);
|
_nextPacket->setSequenceNumber(++_currentSequenceNumber);
|
||||||
sendPacket(*_nextPacket);
|
sendPacket(*_nextPacket);
|
||||||
_atomicCurrentSequenceNumber.store((uint32_t) _currentSequenceNumber);
|
_atomicCurrentSequenceNumber.store((uint32_t) _currentSequenceNumber);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue