INET Framework for OMNeT++/OMNEST
|
Abstract base class for SCTP receive queues. More...
#include <SCTPQueue.h>
Public Types | |
typedef std::map< uint32, SCTPDataVariables * > | PayloadQueue |
Public Member Functions | |
SCTPQueue () | |
Constructor. More... | |
SCTPQueue (SCTPAssociation *assoc) | |
~SCTPQueue () | |
Virtual destructor. More... | |
bool | checkAndInsertChunk (const uint32 key, SCTPDataVariables *chunk) |
SCTPDataVariables * | getAndExtractChunk (const uint32 tsn) |
SCTPDataVariables * | extractMessage () |
void | printQueue () const |
uint32 | getQueueSize () const |
SCTPDataVariables * | getFirstChunk () const |
cMessage * | getMsg (const uint32 key) const |
SCTPDataVariables * | getChunk (const uint32 key) const |
SCTPDataVariables * | getChunkFast (const uint32 tsn, bool &firstTime) |
void | removeMsg (const uint32 key) |
bool | deleteMsg (const uint32 tsn) |
int32 | getNumBytes () const |
SCTPDataVariables * | dequeueChunkBySSN (const uint16 ssn) |
uint32 | getSizeOfFirstChunk (const L3Address &remoteAddress) |
uint16 | getFirstSsnInQueue (const uint16 sid) |
void | findEarliestOutstandingTSNsForPath (const L3Address &remoteAddress, uint32 &earliestOutstandingTSN, uint32 &rtxEarliestOutstandingTSN) const |
Public Attributes | |
PayloadQueue | payloadQueue |
Protected Attributes | |
SCTPAssociation * | assoc |
Private Attributes | |
PayloadQueue::iterator | GetChunkFastIterator |
Abstract base class for SCTP receive queues.
This class represents data received by SCTP but not yet passed up to the application. The class also accomodates for selective retransmission, i.e. also acts as a segment buffer.
This class goes hand-in-hand with SCTPSendQueue.
This class is polymorphic because depending on where and how you use the SCTP model you might have different ideas about "sending data" on a simulated connection: you might want to transmit real bytes, "dummy" (byte count only), cMessage objects, etc; see discussion at SCTPSendQueue. Different subclasses can be written to accomodate different needs.
typedef std::map<uint32, SCTPDataVariables *> inet::sctp::SCTPQueue::PayloadQueue |
inet::sctp::SCTPQueue::SCTPQueue | ( | ) |
Constructor.
inet::sctp::SCTPQueue::SCTPQueue | ( | SCTPAssociation * | assoc | ) |
inet::sctp::SCTPQueue::~SCTPQueue | ( | ) |
Virtual destructor.
bool inet::sctp::SCTPQueue::checkAndInsertChunk | ( | const uint32 | key, |
SCTPDataVariables * | chunk | ||
) |
Referenced by inet::sctp::SCTPReceiveStream::enqueueNewDataChunk(), inet::sctp::SCTPAssociation::handleChunkReportedAsMissing(), inet::sctp::SCTPAssociation::moveChunkToOtherPath(), inet::sctp::SCTPAssociation::putInDeliveryQ(), inet::sctp::SCTPAssociation::putInTransmissionQ(), and inet::sctp::SCTPAssociation::sendOnPath().
bool inet::sctp::SCTPQueue::deleteMsg | ( | const uint32 | tsn | ) |
Referenced by inet::sctp::SCTPAssociation::makeRoomForTsn().
SCTPDataVariables * inet::sctp::SCTPQueue::dequeueChunkBySSN | ( | const uint16 | ssn | ) |
SCTPDataVariables * inet::sctp::SCTPQueue::extractMessage | ( | ) |
Referenced by inet::sctp::SCTPAssociation::pushUlp().
void inet::sctp::SCTPQueue::findEarliestOutstandingTSNsForPath | ( | const L3Address & | remoteAddress, |
uint32 & | earliestOutstandingTSN, | ||
uint32 & | rtxEarliestOutstandingTSN | ||
) | const |
Referenced by inet::sctp::SCTPAssociation::checkPseudoCumAck().
SCTPDataVariables * inet::sctp::SCTPQueue::getAndExtractChunk | ( | const uint32 | tsn | ) |
SCTPDataVariables * inet::sctp::SCTPQueue::getChunk | ( | const uint32 | key | ) | const |
Referenced by inet::sctp::SCTPAssociation::chunkHasBeenAcked(), inet::sctp::SCTPReceiveStream::enqueueNewDataChunk(), inet::sctp::SCTPAssociation::handleChunkReportedAsMissing(), inet::sctp::SCTPAssociation::makeRoomForTsn(), inet::sctp::SCTPAssociation::nonRenegablyAckChunk(), inet::sctp::SCTPAssociation::processSackArrived(), inet::sctp::SCTPReceiveStream::reassemble(), and inet::sctp::SCTPAssociation::renegablyAckChunk().
SCTPDataVariables * inet::sctp::SCTPQueue::getChunkFast | ( | const uint32 | tsn, |
bool & | firstTime | ||
) |
Referenced by inet::sctp::SCTPAssociation::processSackArrived().
SCTPDataVariables * inet::sctp::SCTPQueue::getFirstChunk | ( | ) | const |
Referenced by inet::sctp::SCTPAssociation::processForwardTsnArrived().
cMessage * inet::sctp::SCTPQueue::getMsg | ( | const uint32 | key | ) | const |
int32 inet::sctp::SCTPQueue::getNumBytes | ( | ) | const |
uint32 inet::sctp::SCTPQueue::getQueueSize | ( | ) | const |
Referenced by inet::sctp::SCTPAssociation::calculateRcvBuffer(), inet::sctp::SCTPReceiveStream::enqueueNewDataChunk(), inet::sctp::SCTPAssociation::process_RCV_Message(), inet::sctp::SCTPAssociation::processForwardTsnArrived(), inet::sctp::SCTPAssociation::pushUlp(), inet::sctp::SCTPAssociation::putInDeliveryQ(), inet::sctp::SCTPAssociation::putInTransmissionQ(), and inet::sctp::SCTPAssociation::sendOnPath().
Referenced by inet::sctp::SCTPAssociation::sendOnPath().
void inet::sctp::SCTPQueue::printQueue | ( | ) | const |
void inet::sctp::SCTPQueue::removeMsg | ( | const uint32 | key | ) |
|
protected |
Referenced by SCTPQueue().
|
private |
Referenced by getChunkFast().
PayloadQueue inet::sctp::SCTPQueue::payloadQueue |
Referenced by inet::sctp::SCTPAssociation::advancePeerTsn(), checkAndInsertChunk(), inet::sctp::SCTPAssociation::chunkReschedulingControl(), inet::sctp::SCTPAssociation::createForwardTsnChunk(), deleteMsg(), inet::sctp::SCTPAssociation::dequeueAckedChunks(), dequeueChunkBySSN(), extractMessage(), findEarliestOutstandingTSNsForPath(), getAndExtractChunk(), getChunk(), getChunkFast(), getFirstChunk(), getFirstSsnInQueue(), getMsg(), getNumBytes(), inet::sctp::SCTPAssociation::getOutboundDataChunk(), getQueueSize(), getSizeOfFirstChunk(), inet::sctp::SCTPAssociation::loadPacket(), inet::sctp::SCTPAssociation::peekAbandonedChunk(), printQueue(), inet::sctp::SCTPAssociation::process_TIMEOUT_RTX(), inet::sctp::SCTPAssociation::processPacketDropArrived(), inet::sctp::SCTPAssociation::processSackArrived(), inet::sctp::SCTPAssociation::pushUlp(), inet::sctp::SCTPAssociation::putInTransmissionQ(), inet::sctp::SCTP::removeAssociation(), removeMsg(), inet::sctp::SCTPAssociation::storePacket(), and ~SCTPQueue().