Implement Packet::setSequenceNumber

This commit is contained in:
Atlante45 2015-07-28 14:00:59 -07:00
parent 71004ef519
commit ca99699674
3 changed files with 8 additions and 2 deletions

View file

@ -112,6 +112,11 @@ Packet& Packet::operator=(Packet&& other) {
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 RELIABILITY_BIT_MASK = 1 << (sizeof(Packet::SequenceNumberAndBitField) - 2);
static const uint32_t MESSAGE_BIT_MASK = 1 << (sizeof(Packet::SequenceNumberAndBitField) - 3);
@ -130,6 +135,7 @@ void Packet::writeHeader() {
// grab pointer to current SequenceNumberAndBitField
SequenceNumberAndBitField* seqNumBitField = reinterpret_cast<SequenceNumberAndBitField*>(_packet.get());
// 0 for data packets
*seqNumBitField &= ~CONTROL_BIT_MASK;
if (_isPartOfMessage) {

View file

@ -52,7 +52,7 @@ public:
bool isReliable() const { return _isReliable; }
SequenceNumber getSequenceNumber() const { return _sequenceNumber; }
void setSequenceNumber();
void setSequenceNumber(SequenceNumber sequenceNumber);
protected:
Packet(qint64 size, bool isReliable = false, bool isPartOfMessage = false);

View file

@ -131,7 +131,7 @@ void SendQueue::sendNextPacket() {
_lastSendTimestamp = sendTime;
if (_nextPacket) {
_nextPacket->writeSequenceNumber(++_currentSequenceNumber);
_nextPacket->setSequenceNumber(++_currentSequenceNumber);
sendPacket(*_nextPacket);
_atomicCurrentSequenceNumber.store((uint32_t) _currentSequenceNumber);