INET Framework for OMNeT++/OMNEST
inet::sctp::SctpErrorChunk Class Reference

#include <SctpHeader.h>

Inheritance diagram for inet::sctp::SctpErrorChunk:
inet::sctp::SctpErrorChunk_Base inet::sctp::SctpChunk

Public Member Functions

 SctpErrorChunk (const char *name=nullptr, int32_t kind=0)
 
 SctpErrorChunk (const SctpErrorChunk &other)
 
SctpErrorChunkoperator= (const SctpErrorChunk &other)
 
 ~SctpErrorChunk ()
 
virtual SctpErrorChunkdup () const override
 
virtual void setParametersArraySize (size_t size) override
 
virtual size_t getParametersArraySize () const override
 
virtual void setParameters (size_t k, SctpParameter *parameters) override
 Generated but unused method, should not be called. More...
 
virtual void appendParameters (SctpParameter *parameters) override
 
virtual void insertParameters (size_t k, SctpParameter *parameters) override
 
virtual void eraseParameters (size_t k) override
 
virtual SctpParametergetParameters (size_t k) const override
 Returns the kth parameter in this SCTP Error Chunk. More...
 
virtual void addParameters (SctpParameter *msg)
 Adds a message object to the SCTP packet. More...
 
virtual SctpParameterremoveParameter ()
 Removes and returns the first message object in this SCTP packet. More...
 
virtual void insertParameters (size_t k, SctpParameter *parameters)=0
 
void insertParameters (SctpParameter *parameters)
 
- Public Member Functions inherited from inet::sctp::SctpErrorChunk_Base
virtual ~SctpErrorChunk_Base ()
 
virtual void parsimPack (omnetpp::cCommBuffer *b) const override
 
virtual void parsimUnpack (omnetpp::cCommBuffer *b) override
 
virtual bool getTBit () const
 
virtual void setTBit (bool TBit)
 
virtual bool getMBit () const
 
virtual void setMBit (bool MBit)
 
virtual SctpParametergetParametersForUpdate (size_t k)
 
void insertParameters (SctpParameter *parameters)
 
- Public Member Functions inherited from inet::sctp::SctpChunk
 SctpChunk (const char *name=nullptr)
 
 SctpChunk (const SctpChunk &other)
 
virtual ~SctpChunk ()
 
SctpChunkoperator= (const SctpChunk &other)
 
virtual uint8_t getSctpChunkType () const
 
virtual void setSctpChunkType (uint8_t sctpChunkType)
 
virtual uint32_t getFlags () const
 
virtual void setFlags (uint32_t flags)
 
virtual unsigned short getLength () const
 
virtual void setLength (unsigned short length)
 
virtual void setChunkNameArraySize (size_t size)
 
virtual size_t getChunkNameArraySize () const
 
virtual char getChunkName (size_t k) const
 
virtual void setChunkName (size_t k, char chunkName)
 
virtual void insertChunkName (size_t k, char chunkName)
 
void insertChunkName (char chunkName)
 
virtual void appendChunkName (char chunkName)
 
virtual void eraseChunkName (size_t k)
 

Protected Attributes

std::vector< SctpParameter * > parameterList
 
- Protected Attributes inherited from inet::sctp::SctpErrorChunk_Base
bool TBit = 0
 
bool MBit = 0
 
- Protected Attributes inherited from inet::sctp::SctpChunk
uint8_t sctpChunkType = 0
 
uint32_t flags = 0
 
unsigned short length = 0
 
char * chunkName = nullptr
 
size_t chunkName_arraysize = 0
 

Private Member Functions

void copy (const SctpErrorChunk &other)
 
void clean ()
 

Additional Inherited Members

- Protected Member Functions inherited from inet::sctp::SctpErrorChunk_Base
bool operator== (const SctpErrorChunk_Base &)=delete
 
 SctpErrorChunk_Base (const char *name=nullptr)
 
 SctpErrorChunk_Base (const SctpErrorChunk_Base &other)
 
SctpErrorChunk_Baseoperator= (const SctpErrorChunk_Base &other)
 
- Protected Member Functions inherited from inet::sctp::SctpChunk
bool operator== (const SctpChunk &)=delete
 

Constructor & Destructor Documentation

◆ SctpErrorChunk() [1/2]

inet::sctp::SctpErrorChunk::SctpErrorChunk ( const char *  name = nullptr,
int32_t  kind = 0 
)
inline
92 : SctpErrorChunk_Base() {};

◆ SctpErrorChunk() [2/2]

inet::sctp::SctpErrorChunk::SctpErrorChunk ( const SctpErrorChunk other)
inline
93 : SctpErrorChunk_Base(other) { copy(other); };

◆ ~SctpErrorChunk()

inet::sctp::SctpErrorChunk::~SctpErrorChunk ( )
221 {
222  clean();
223 }

Member Function Documentation

◆ addParameters()

void inet::sctp::SctpErrorChunk::addParameters ( SctpParameter msg)
virtual

Adds a message object to the SCTP packet.

The packet length will be adjusted

201 {
202  take(msg);
203 
204  this->setByteLength(this->getByteLength() + ADD_PADDING(msg->getByteLength()));
205  parameterList.push_back(msg);
206 }

Referenced by inet::sctp::SctpHeaderSerializer::deserialize(), inet::sctp::SctpNatHook::sendBackError(), inet::sctp::SctpAssociation::sendHMacError(), and inet::sctp::SctpAssociation::sendInvalidStreamError().

◆ appendParameters()

virtual void inet::sctp::SctpErrorChunk::appendParameters ( SctpParameter parameters)
inlineoverridevirtual

Implements inet::sctp::SctpErrorChunk_Base.

103 { throw cRuntimeError("Unimplemented function"); }

◆ clean()

void inet::sctp::SctpErrorChunk::clean ( )
private
226 {
227  while (!parameterList.empty()) {
228  cPacket *msg = parameterList.front();
229  parameterList.erase(parameterList.begin());
230  dropAndDelete(msg);
231  }
232 }

Referenced by operator=(), and ~SctpErrorChunk().

◆ copy()

void inet::sctp::SctpErrorChunk::copy ( const SctpErrorChunk other)
private
172 {
173  for (const auto& elem : other.parameterList) {
174  SctpParameter *param = (elem)->dup();
175  take(param);
176  parameterList.push_back(param);
177  }
178 }

Referenced by operator=().

◆ dup()

virtual SctpErrorChunk* inet::sctp::SctpErrorChunk::dup ( ) const
inlineoverridevirtual

Reimplemented from inet::sctp::SctpErrorChunk_Base.

97 { return new SctpErrorChunk(*this); }

Referenced by copy().

◆ eraseParameters()

virtual void inet::sctp::SctpErrorChunk::eraseParameters ( size_t  k)
inlineoverridevirtual

Implements inet::sctp::SctpErrorChunk_Base.

106 { throw cRuntimeError("Unimplemented function"); }

◆ getParameters()

SctpParameter * inet::sctp::SctpErrorChunk::getParameters ( size_t  k) const
overridevirtual

Returns the kth parameter in this SCTP Error Chunk.

Implements inet::sctp::SctpErrorChunk_Base.

191 {
192  return parameterList.at(k);
193 }

Referenced by inet::sctp::SctpAssociation::processErrorArrived(), and inet::sctp::SctpHeaderSerializer::serialize().

◆ getParametersArraySize()

size_t inet::sctp::SctpErrorChunk::getParametersArraySize ( ) const
overridevirtual

◆ insertParameters() [1/3]

void inet::sctp::SctpErrorChunk_Base::insertParameters
inline
1472 {appendParameters(parameters);}

◆ insertParameters() [2/3]

virtual void inet::sctp::SctpErrorChunk::insertParameters ( size_t  k,
SctpParameter parameters 
)
inlineoverridevirtual

Implements inet::sctp::SctpErrorChunk_Base.

105 { throw cRuntimeError("Unimplemented function"); }

◆ insertParameters() [3/3]

virtual void inet::sctp::SctpErrorChunk_Base::insertParameters

◆ operator=()

SctpErrorChunk & inet::sctp::SctpErrorChunk::operator= ( const SctpErrorChunk other)
162 {
163  if (this == &other)
164  return *this;
165  clean();
167  copy(other);
168  return *this;
169 }

◆ removeParameter()

SctpParameter * inet::sctp::SctpErrorChunk::removeParameter ( )
virtual

Removes and returns the first message object in this SCTP packet.

209 {
210  if (parameterList.empty())
211  return nullptr;
212 
213  SctpParameter *msg = parameterList.front();
214  parameterList.erase(parameterList.begin());
215  drop(msg);
216  this->setByteLength(this->getByteLength() + ADD_PADDING(msg->getByteLength()));
217  return msg;
218 }

◆ setParameters()

void inet::sctp::SctpErrorChunk::setParameters ( size_t  k,
SctpParameter parameters 
)
overridevirtual

Generated but unused method, should not be called.

Implements inet::sctp::SctpErrorChunk_Base.

196 {
197  throw cException(this, "setParameter() not supported, use addParameter()");
198 }

◆ setParametersArraySize()

void inet::sctp::SctpErrorChunk::setParametersArraySize ( size_t  size)
overridevirtual

Implements inet::sctp::SctpErrorChunk_Base.

181 {
182  throw cException(this, "setParametersArraySize() not supported, use addParameter()");
183 }

Member Data Documentation

◆ parameterList

std::vector<SctpParameter *> inet::sctp::SctpErrorChunk::parameterList
protected

The documentation for this class was generated from the following files:
inet::sctp::SctpErrorChunk::clean
void clean()
Definition: SctpHeader.cc:225
inet::sctp::SctpErrorChunk::SctpErrorChunk
SctpErrorChunk(const char *name=nullptr, int32_t kind=0)
Definition: SctpHeader.h:92
ADD_PADDING
#define ADD_PADDING(x)
Definition: SctpAssociation.h:252
inet::sctp::SctpErrorChunk::copy
void copy(const SctpErrorChunk &other)
Definition: SctpHeader.cc:171
inet::sctp::SctpErrorChunk::appendParameters
virtual void appendParameters(SctpParameter *parameters) override
Definition: SctpHeader.h:103
inet::sctp::SctpErrorChunk::parameterList
std::vector< SctpParameter * > parameterList
Definition: SctpHeader.h:85
inet::sctp::SctpErrorChunk_Base::SctpErrorChunk_Base
SctpErrorChunk_Base(const char *name=nullptr)
inet::physicallayer::k
const double k
Definition: Qam1024Modulation.cc:14
inet::sctp::SctpErrorChunk::dup
virtual SctpErrorChunk * dup() const override
Definition: SctpHeader.h:97
inet::sctp::SctpErrorChunk_Base::operator=
SctpErrorChunk_Base & operator=(const SctpErrorChunk_Base &other)