INET Framework for OMNeT++/OMNEST
inet::PacketDissector::ChunkBuilder Class Reference

#include <PacketDissector.h>

Inheritance diagram for inet::PacketDissector::ChunkBuilder:
inet::PacketDissector::ICallback

Public Member Functions

const Ptr< const ChunkgetContent ()
 
virtual bool shouldDissectProtocolDataUnit (const Protocol *protocol) override
 True means the packet dissector should recursively process the PDU. More...
 
virtual void startProtocolDataUnit (const Protocol *protocol) override
 Notifies about the start of a new protocol data unit (PDU). More...
 
virtual void endProtocolDataUnit (const Protocol *protocol) override
 Notifies about the end of the current protocol data unit (PDU). More...
 
virtual void markIncorrect () override
 Marks the current protocol data unit as incorrect (e.g. More...
 
virtual void visitChunk (const Ptr< const Chunk > &chunk, const Protocol *protocol) override
 Notifies about a new chunk in the current protocol data unit (PDU). More...
 

Protected Attributes

Ptr< const Chunkcontent
 

Member Function Documentation

◆ endProtocolDataUnit()

virtual void inet::PacketDissector::ChunkBuilder::endProtocolDataUnit ( const Protocol protocol)
inlineoverridevirtual

Notifies about the end of the current protocol data unit (PDU).

Implements inet::PacketDissector::ICallback.

110 {}

◆ getContent()

const Ptr<const Chunk> inet::PacketDissector::ChunkBuilder::getContent ( )
inline

◆ markIncorrect()

virtual void inet::PacketDissector::ChunkBuilder::markIncorrect ( )
inlineoverridevirtual

Marks the current protocol data unit as incorrect (e.g.

bad CRC/FCS, incorrect length field, bit error).

Implements inet::PacketDissector::ICallback.

111 {}

◆ shouldDissectProtocolDataUnit()

virtual bool inet::PacketDissector::ChunkBuilder::shouldDissectProtocolDataUnit ( const Protocol protocol)
inlineoverridevirtual

True means the packet dissector should recursively process the PDU.

When false, start and end notifications and one visit chunk are still generated.

Implements inet::PacketDissector::ICallback.

108 { return true; }

◆ startProtocolDataUnit()

virtual void inet::PacketDissector::ChunkBuilder::startProtocolDataUnit ( const Protocol protocol)
inlineoverridevirtual

Notifies about the start of a new protocol data unit (PDU).

Implements inet::PacketDissector::ICallback.

109 {}

◆ visitChunk()

void inet::PacketDissector::ChunkBuilder::visitChunk ( const Ptr< const Chunk > &  chunk,
const Protocol protocol 
)
overridevirtual

Notifies about a new chunk in the current protocol data unit (PDU).

Implements inet::PacketDissector::ICallback.

66 {
67  if (content == nullptr)
68  content = chunk;
69  else {
70  if (content->canInsertAtBack(chunk)) {
71  const auto& newContent = makeExclusivelyOwnedMutableChunk(content);
72  newContent->insertAtBack(chunk);
73  newContent->markImmutable();
74  content = newContent->simplify();
75  }
76  else {
77  auto sequenceChunk = makeShared<SequenceChunk>();
78  sequenceChunk->insertAtBack(content);
79  sequenceChunk->insertAtBack(chunk);
80  sequenceChunk->markImmutable();
81  content = sequenceChunk;
82  }
83  }
84 }

Member Data Documentation

◆ content

Ptr<const Chunk> inet::PacketDissector::ChunkBuilder::content
protected

The documentation for this class was generated from the following files:
inet::makeExclusivelyOwnedMutableChunk
const Ptr< T > makeExclusivelyOwnedMutableChunk(const Ptr< const T > &chunk)
Definition: Chunk.h:860
inet::PacketDissector::ChunkBuilder::content
Ptr< const Chunk > content
Definition: PacketDissector.h:103