R-Type 0.1
Loading...
Searching...
No Matches
PacketTracker Class Reference

Generates outgoing sequence numbers and tracks received ones. More...

#include <tracking/PacketTracker.hpp>

Public Member Functions

 PacketTracker ()
 Creates a tracker whose first sequence number is 1.
 
std::uint32_t getNextSequence ()
 Returns the sequence number for the next outgoing packet.
 
PacketReceiveRes onPacketReceived (std::uint32_t sequence)
 Records a received sequence number.
 
std::uint32_t getAck () const
 Returns the latest received sequence number.
 
std::uint32_t getAckBits () const
 Returns the bitfield of the 32 sequences before the latest one.
 

Static Public Member Functions

static bool isPacketinAck (std::uint32_t sequence, std::uint32_t ack, std::uint32_t ackBits)
 Tells whether an ack and its bitfield cover a sequence number.
 

Detailed Description

Generates outgoing sequence numbers and tracks received ones.

Member Function Documentation

◆ getNextSequence()

std::uint32_t PacketTracker::getNextSequence ( )

Returns the sequence number for the next outgoing packet.

Returns
A sequence number, increased by one on each call.

◆ onPacketReceived()

PacketReceiveRes PacketTracker::onPacketReceived ( std::uint32_t sequence)

Records a received sequence number.

Parameters
sequenceSequence number read from the packet header.
Returns
How the packet relates to the ones already received.

◆ getAck()

std::uint32_t PacketTracker::getAck ( ) const

Returns the latest received sequence number.

Returns
The latest sequence, or 0 if nothing was received.

◆ getAckBits()

std::uint32_t PacketTracker::getAckBits ( ) const

Returns the bitfield of the 32 sequences before the latest one.

Returns
Bit i is set when sequence ack - 1 - i was received.

◆ isPacketinAck()

bool PacketTracker::isPacketinAck ( std::uint32_t sequence,
std::uint32_t ack,
std::uint32_t ackBits )
static

Tells whether an ack and its bitfield cover a sequence number.

Parameters
sequenceSequence number to look for.
ackLatest sequence acknowledged by the peer.
ackBitsBitfield sent along with ack.
Returns
True if the peer acknowledged the sequence.