|
INET Framework for OMNeT++/OMNEST
|
Abstract base class for SCTP receive queues. More...
#include <SctpQueue.h>
Public Types | |
| typedef std::map< uint32_t, SctpDataVariables * > | PayloadQueue |
Public Member Functions | |
| SctpQueue () | |
| Constructor. More... | |
| SctpQueue (SctpAssociation *assoc) | |
| ~SctpQueue () | |
| Virtual destructor. More... | |
| bool | checkAndInsertChunk (const uint32_t key, SctpDataVariables *chunk) |
| SctpDataVariables * | getAndExtractChunk (const uint32_t tsn) |
| SctpDataVariables * | extractMessage () |
| void | printQueue () const |
| uint32_t | getQueueSize () const |
| SctpDataVariables * | getFirstChunk () const |
| cMessage * | getMsg (const uint32_t key) const |
| SctpDataVariables * | getChunk (const uint32_t key) const |
| SctpDataVariables * | getChunkFast (const uint32_t tsn, bool &firstTime) |
| void | removeMsg (const uint32_t key) |
| bool | deleteMsg (const uint32_t tsn) |
| int32_t | getNumBytes () const |
| SctpDataVariables * | dequeueChunkBySSN (const uint16_t ssn) |
| uint32_t | getSizeOfFirstChunk (const L3Address &remoteAddress) |
| uint16_t | getFirstSsnInQueue (const uint16_t sid) |
| void | findEarliestOutstandingTsnsForPath (const L3Address &remoteAddress, uint32_t &earliestOutstandingTsn, uint32_t &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_t, 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_t | 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_t | tsn | ) |
Referenced by inet::sctp::SctpAssociation::makeRoomForTsn().
| SctpDataVariables * inet::sctp::SctpQueue::dequeueChunkBySSN | ( | const uint16_t | ssn | ) |
| SctpDataVariables * inet::sctp::SctpQueue::extractMessage | ( | ) |
Referenced by inet::sctp::SctpAssociation::pushUlp().
| void inet::sctp::SctpQueue::findEarliestOutstandingTsnsForPath | ( | const L3Address & | remoteAddress, |
| uint32_t & | earliestOutstandingTsn, | ||
| uint32_t & | rtxEarliestOutstandingTsn | ||
| ) | const |
Referenced by inet::sctp::SctpAssociation::checkPseudoCumAck().
| SctpDataVariables * inet::sctp::SctpQueue::getAndExtractChunk | ( | const uint32_t | tsn | ) |
| SctpDataVariables * inet::sctp::SctpQueue::getChunk | ( | const uint32_t | 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_t | tsn, |
| bool & | firstTime | ||
| ) |
Referenced by inet::sctp::SctpAssociation::processSackArrived().
| SctpDataVariables * inet::sctp::SctpQueue::getFirstChunk | ( | ) | const |
| uint16_t inet::sctp::SctpQueue::getFirstSsnInQueue | ( | const uint16_t | sid | ) |
Referenced by inet::sctp::SctpAssociation::processForwardTsnArrived().
| cMessage * inet::sctp::SctpQueue::getMsg | ( | const uint32_t | key | ) | const |
| int32_t inet::sctp::SctpQueue::getNumBytes | ( | ) | const |
| uint32_t 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(), inet::sctp::SctpAssociation::sendOnPath(), and inet::sctp::SctpAssociation::stateEntered().
| uint32_t inet::sctp::SctpQueue::getSizeOfFirstChunk | ( | const L3Address & | remoteAddress | ) |
Referenced by inet::sctp::SctpAssociation::sendOnPath().
| void inet::sctp::SctpQueue::printQueue | ( | ) | const |
| void inet::sctp::SctpQueue::removeMsg | ( | const uint32_t | 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(), inet::sctp::SctpAssociation::cwndUpdateAfterSack(), 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().