21#ifndef SATELLITE_GENERIC_STREAM_ENCAPSULATOR_ARQ
22#define SATELLITE_GENERIC_STREAM_ENCAPSULATOR_ARQ
29#include "ns3/event-id.h"
30#include "ns3/mac48-address.h"
71 Mac48Address decapAddress,
72 Mac48Address sourceE2EAddress,
73 Mac48Address destE2EAddress,
75 uint32_t additionalHeaderSize = 0);
112 uint32_t& nextMinTxO);
126 virtual void ReceiveAck(Ptr<SatArqAckMessage> ack);
146 void CleanUp(uint8_t sequenceNumber);
171 void SendAck(uint8_t seqNo)
const;
void ArqReTxTimerExpired(uint8_t seqNo)
ARQ Tx timer has expired.
Time m_rxWaitingTimer
Waiting time for waiting a certain SN to be received.
uint32_t m_maxNoOfRetransmissions
Maximum number of retransmissions.
SatGenericStreamEncapsulatorArq()
Default constructor, not used.
Time m_retransmissionTimer
Retransmission timer, i.e.
virtual void ReceivePdu(Ptr< Packet > p)
Receive a packet, thus decapsulate and defragment/deconcatenate if needed.
uint32_t m_arqWindowSize
ARQ window size, i.e.
uint32_t m_txedBufferSize
uint32_t m_nextExpectedSeqNo
Next expected sequence number at the packet reception.
virtual void NotifyConstructionCompleted() override
Notifier called once the ObjectBase is fully constructed.
virtual void ReceiveAck(Ptr< SatArqAckMessage > ack)
Receive a control message (ARQ ACK).
virtual ~SatGenericStreamEncapsulatorArq()
Destructor for SatGenericStreamEncapsulatorArq.
void RxWaitingTimerExpired(uint32_t sn)
Rx waiting timer for a PDU has expired.
std::map< uint32_t, Ptr< SatArqBufferContext > > m_reorderingBuffer
key = sequence number value = GSE packet
std::map< uint8_t, Ptr< SatArqBufferContext > > m_txedBuffer
Transmitted and retransmission context buffer.
void ReassembleAndReceive()
Reassemble and receive the received PDUs if possible.
uint32_t m_arqHeaderSize
ARQ header size in Bytes.
void CleanUp(uint8_t sequenceNumber)
Clean-up a certain sequence number.
uint32_t ConvertSeqNo(uint8_t seqNo) const
Convert the 8-bit sequence number value from ARQ header into 32-bit continuous sequence number stream...
void SendAck(uint8_t seqNo) const
Send ACK for a given sequence number.
virtual void DoDispose()
Dispose of this class instance.
virtual uint32_t GetTxBufferSizeInBytes() const
Get the buffered packets for this encapsulator.
std::map< uint8_t, Ptr< SatArqBufferContext > > m_retxBuffer
Ptr< SatArqSequenceNumber > m_seqNo
Sequence number handler.
uint32_t m_retxBufferSize
virtual Ptr< Packet > NotifyTxOpportunity(uint32_t bytes, uint32_t &bytesLeft, uint32_t &nextMinTxO)
Notify a Tx opportunity to this encapsulator.
static TypeId GetTypeId(void)
Get the type ID.
SatGenericStreamEncapsulator()
Default constructor, not used.
SatArqSequenceNumber is handling the sequence numbers for the ARQ process.