INET Framework for OMNeT++/OMNEST
inet::FieldsChunkSerializer Class Referenceabstract

#include <FieldsChunkSerializer.h>

Inheritance diagram for inet::FieldsChunkSerializer:
inet::ChunkSerializer inet::AckingMacHeaderSerializer inet::aodv::AodvControlPacketsSerializer inet::ApplicationPacketSerializer inet::ArpPacketSerializer inet::bgp::BgpHeaderSerializer inet::BMacHeaderSerializer inet::CrcHeaderSerializer inet::CsmaCaMacHeaderSerializer inet::CsmaCaMacTrailerSerializer inet::DhcpMessageSerializer inet::DsdvHelloSerializer inet::EchoPacketSerializer inet::EtherAppReqSerializer inet::EtherAppRespSerializer inet::EthernetControlFrameSerializer inet::EthernetFcsSerializer inet::EthernetMacAddressFieldsSerializer inet::EthernetMacHeaderSerializer inet::EthernetPaddingSerializer inet::EthernetTypeOrLengthFieldSerializer inet::FcsHeaderSerializer inet::FragmentNumberHeaderSerializer inet::GenericAppMsgSerializer inet::GptpPacketSerializer inet::IcmpHeaderSerializer inet::Icmpv6HeaderSerializer inet::ieee80211::Ieee80211MacHeaderSerializer inet::ieee80211::Ieee80211MacTrailerSerializer inet::ieee80211::Ieee80211MgmtFrameSerializer inet::ieee80211::Ieee80211MpduSubframeHeaderSerializer inet::ieee80211::Ieee80211MsduSubframeHeaderSerializer inet::Ieee8021aeTagEpdHeaderSerializer inet::Ieee8021aeTagTpidHeaderSerializer inet::Ieee8021dBpduSerializer inet::Ieee8021qTagEpdHeaderSerializer inet::Ieee8021qTagTpidHeaderSerializer inet::Ieee8021rTagEpdHeaderSerializer inet::Ieee8021rTagTpidHeaderSerializer inet::Ieee8022LlcHeaderSerializer inet::Ieee802EpdHeaderSerializer inet::IgmpHeaderSerializer inet::Ipv4HeaderSerializer inet::Ipv6HeaderSerializer inet::MplsPacketSerializer inet::ospf::OspfPacketSerializer inet::ospfv2::Ospfv2PacketSerializer inet::physicallayer::EthernetFragmentPhyHeaderSerializer inet::physicallayer::EthernetPhyHeaderBaseSerializer inet::physicallayer::EthernetPhyHeaderSerializer inet::physicallayer::Ieee80211DsssPhyHeaderSerializer inet::physicallayer::Ieee80211ErpOfdmPhyHeaderSerializer inet::physicallayer::Ieee80211FhssPhyHeaderSerializer inet::physicallayer::Ieee80211HrDsssPhyHeaderSerializer inet::physicallayer::Ieee80211HtPhyHeaderSerializer inet::physicallayer::Ieee80211IrPhyHeaderSerializer inet::physicallayer::Ieee80211OfdmPhyHeaderSerializer inet::physicallayer::Ieee80211VhtPhyHeaderSerializer inet::PimPacketSerializer inet::PppHeaderSerializer inet::PppTrailerSerializer inet::RipPacketSerializer inet::rtp::RtcpPacketSerializer inet::rtp::RtpMpegPacketSerializer inet::rtp::RtpPacketSerializer inet::sctp::SctpHeaderSerializer inet::SequenceNumberHeaderSerializer inet::tcp::TcpHeaderSerializer inet::TransportPseudoHeaderSerializer inet::UdpHeaderSerializer inet::UnitDiskPhyHeaderSerializer inet::VoipStreamPacketSerializer inet::XMacHeaderSerializer

Public Member Functions

virtual void serialize (MemoryOutputStream &stream, const Ptr< const Chunk > &chunk, b offset, b length) const override
 Serializes a chunk into a stream by writing the bytes representing the chunk at the end of the stream. More...
 
virtual const Ptr< Chunkdeserialize (MemoryInputStream &stream, const std::type_info &typeInfo) const override
 Deserializes a chunk from a stream by reading the bytes at the current position of the stream. More...
 

Protected Member Functions

virtual void serialize (MemoryOutputStream &stream, const Ptr< const Chunk > &chunk) const =0
 Serializes a chunk into a stream by writing all bytes representing the chunk at the end of the stream. More...
 
virtual const Ptr< Chunkdeserialize (MemoryInputStream &stream) const =0
 Deserializes a chunk from a stream by reading the bytes at the current position of the stream. More...
 

Additional Inherited Members

- Static Public Attributes inherited from inet::ChunkSerializer
static b totalSerializedLength = b(0)
 
static b totalDeserializedLength = b(0)
 

Member Function Documentation

◆ deserialize() [1/2]

virtual const Ptr<Chunk> inet::FieldsChunkSerializer::deserialize ( MemoryInputStream stream) const
protectedpure virtual

Deserializes a chunk from a stream by reading the bytes at the current position of the stream.

The current stream position is updated according to the length of the returned chunk.

Implemented in inet::physicallayer::Ieee80211VhtPhyHeaderSerializer, inet::physicallayer::Ieee80211HtPhyHeaderSerializer, inet::physicallayer::Ieee80211ErpOfdmPhyHeaderSerializer, inet::physicallayer::Ieee80211OfdmPhyHeaderSerializer, inet::EthernetFcsSerializer, inet::physicallayer::Ieee80211HrDsssPhyHeaderSerializer, inet::ieee80211::Ieee80211MpduSubframeHeaderSerializer, inet::EthernetPaddingSerializer, inet::physicallayer::EthernetFragmentPhyHeaderSerializer, inet::physicallayer::Ieee80211DsssPhyHeaderSerializer, inet::ospfv2::Ospfv2PacketSerializer, inet::EthernetMacHeaderSerializer, inet::ieee80211::Ieee80211MsduSubframeHeaderSerializer, inet::physicallayer::EthernetPhyHeaderSerializer, inet::physicallayer::Ieee80211IrPhyHeaderSerializer, inet::EtherAppRespSerializer, inet::EthernetTypeOrLengthFieldSerializer, inet::ieee80211::Ieee80211MacTrailerSerializer, inet::PppTrailerSerializer, inet::CsmaCaMacTrailerSerializer, inet::Ieee8021aeTagEpdHeaderSerializer, inet::Ieee8021qTagEpdHeaderSerializer, inet::Ieee8021rTagEpdHeaderSerializer, inet::tcp::TcpHeaderSerializer, inet::Ipv4HeaderSerializer, inet::ieee80211::Ieee80211MacHeaderSerializer, inet::ieee80211::Ieee80211MgmtFrameSerializer, inet::ArpPacketSerializer, inet::sctp::SctpHeaderSerializer, inet::AckingMacHeaderSerializer, inet::GptpPacketSerializer, inet::physicallayer::EthernetPhyHeaderBaseSerializer, inet::physicallayer::Ieee80211FhssPhyHeaderSerializer, inet::CsmaCaMacHeaderSerializer, inet::aodv::AodvControlPacketsSerializer, inet::bgp::BgpHeaderSerializer, inet::ospf::OspfPacketSerializer, inet::ApplicationPacketSerializer, inet::DhcpMessageSerializer, inet::EtherAppReqSerializer, inet::GenericAppMsgSerializer, inet::VoipStreamPacketSerializer, inet::BMacHeaderSerializer, inet::EthernetMacAddressFieldsSerializer, inet::Ieee8021dBpduSerializer, inet::PppHeaderSerializer, inet::XMacHeaderSerializer, inet::EchoPacketSerializer, inet::Icmpv6HeaderSerializer, inet::IcmpHeaderSerializer, inet::IgmpHeaderSerializer, inet::MplsPacketSerializer, inet::UnitDiskPhyHeaderSerializer, inet::CrcHeaderSerializer, inet::FcsHeaderSerializer, inet::FragmentNumberHeaderSerializer, inet::SequenceNumberHeaderSerializer, inet::DsdvHelloSerializer, inet::PimPacketSerializer, inet::RipPacketSerializer, inet::TransportPseudoHeaderSerializer, inet::UdpHeaderSerializer, inet::Ipv6HeaderSerializer, inet::rtp::RtpMpegPacketSerializer, inet::rtp::RtcpPacketSerializer, inet::rtp::RtpPacketSerializer, inet::EthernetControlFrameSerializer, inet::Ieee8021aeTagTpidHeaderSerializer, inet::Ieee8021qTagTpidHeaderSerializer, inet::Ieee8021rTagTpidHeaderSerializer, inet::Ieee8022LlcHeaderSerializer, and inet::Ieee802EpdHeaderSerializer.

Referenced by deserialize().

◆ deserialize() [2/2]

const Ptr< Chunk > inet::FieldsChunkSerializer::deserialize ( MemoryInputStream stream,
const std::type_info &  typeInfo 
) const
overridevirtual

Deserializes a chunk from a stream by reading the bytes at the current position of the stream.

The returned chunk will be an instance of the provided type. The current stream position is updated according to the length of the returned chunk.

Implements inet::ChunkSerializer.

46 {
47  auto startPosition = stream.getPosition();
48  auto fieldsChunk = staticPtrCast<FieldsChunk>(deserialize(stream));
49  auto endPosition = stream.getPosition();
50  auto chunkLength = endPosition - startPosition;
52  fieldsChunk->setChunkLength(chunkLength);
53  auto serializedBytes = new std::vector<uint8_t>();
54  stream.copyData(*serializedBytes, startPosition, chunkLength);
55  fieldsChunk->setSerializedBytes(serializedBytes);
56  CHUNK_CHECK_USAGE(B(serializedBytes->size()) == fieldsChunk->getChunkLength(), "serialized length is incorrect: serialized=%ld, chunk=%ld", serializedBytes->size(), B(fieldsChunk->getChunkLength()).get());
57  return fieldsChunk;
58 }

◆ serialize() [1/2]

virtual void inet::FieldsChunkSerializer::serialize ( MemoryOutputStream stream,
const Ptr< const Chunk > &  chunk 
) const
protectedpure virtual

Serializes a chunk into a stream by writing all bytes representing the chunk at the end of the stream.

Implemented in inet::physicallayer::Ieee80211VhtPhyHeaderSerializer, inet::physicallayer::Ieee80211HtPhyHeaderSerializer, inet::physicallayer::Ieee80211ErpOfdmPhyHeaderSerializer, inet::physicallayer::Ieee80211OfdmPhyHeaderSerializer, inet::EthernetFcsSerializer, inet::physicallayer::Ieee80211HrDsssPhyHeaderSerializer, inet::ieee80211::Ieee80211MpduSubframeHeaderSerializer, inet::EthernetPaddingSerializer, inet::physicallayer::EthernetFragmentPhyHeaderSerializer, inet::physicallayer::Ieee80211DsssPhyHeaderSerializer, inet::ospfv2::Ospfv2PacketSerializer, inet::EthernetMacHeaderSerializer, inet::ieee80211::Ieee80211MsduSubframeHeaderSerializer, inet::physicallayer::EthernetPhyHeaderSerializer, inet::physicallayer::Ieee80211IrPhyHeaderSerializer, inet::EtherAppRespSerializer, inet::EthernetTypeOrLengthFieldSerializer, inet::ieee80211::Ieee80211MacTrailerSerializer, inet::PppTrailerSerializer, inet::CsmaCaMacTrailerSerializer, inet::Ieee8021aeTagEpdHeaderSerializer, inet::Ieee8021qTagEpdHeaderSerializer, inet::Ieee8021rTagEpdHeaderSerializer, inet::tcp::TcpHeaderSerializer, inet::Ipv4HeaderSerializer, inet::ieee80211::Ieee80211MacHeaderSerializer, inet::ieee80211::Ieee80211MgmtFrameSerializer, inet::ArpPacketSerializer, inet::AckingMacHeaderSerializer, inet::GptpPacketSerializer, inet::physicallayer::EthernetPhyHeaderBaseSerializer, inet::physicallayer::Ieee80211FhssPhyHeaderSerializer, inet::sctp::SctpHeaderSerializer, inet::CsmaCaMacHeaderSerializer, inet::aodv::AodvControlPacketsSerializer, inet::bgp::BgpHeaderSerializer, inet::ospf::OspfPacketSerializer, inet::ApplicationPacketSerializer, inet::DhcpMessageSerializer, inet::EtherAppReqSerializer, inet::GenericAppMsgSerializer, inet::VoipStreamPacketSerializer, inet::BMacHeaderSerializer, inet::EthernetMacAddressFieldsSerializer, inet::Ieee8021dBpduSerializer, inet::PppHeaderSerializer, inet::XMacHeaderSerializer, inet::EchoPacketSerializer, inet::Icmpv6HeaderSerializer, inet::IcmpHeaderSerializer, inet::IgmpHeaderSerializer, inet::MplsPacketSerializer, inet::UnitDiskPhyHeaderSerializer, inet::CrcHeaderSerializer, inet::FcsHeaderSerializer, inet::FragmentNumberHeaderSerializer, inet::SequenceNumberHeaderSerializer, inet::DsdvHelloSerializer, inet::PimPacketSerializer, inet::RipPacketSerializer, inet::TransportPseudoHeaderSerializer, inet::UdpHeaderSerializer, inet::Ipv6HeaderSerializer, inet::rtp::RtpMpegPacketSerializer, inet::rtp::RtcpPacketSerializer, inet::rtp::RtpPacketSerializer, inet::EthernetControlFrameSerializer, inet::Ieee8021aeTagTpidHeaderSerializer, inet::Ieee8021qTagTpidHeaderSerializer, inet::Ieee8021rTagTpidHeaderSerializer, inet::Ieee8022LlcHeaderSerializer, and inet::Ieee802EpdHeaderSerializer.

Referenced by serialize().

◆ serialize() [2/2]

void inet::FieldsChunkSerializer::serialize ( MemoryOutputStream stream,
const Ptr< const Chunk > &  chunk,
b  offset,
b  length 
) const
overridevirtual

Serializes a chunk into a stream by writing the bytes representing the chunk at the end of the stream.

The offset and length parameters allow to write only a part of the data.

Implements inet::ChunkSerializer.

16 {
17  auto fieldsChunk = staticPtrCast<const FieldsChunk>(chunk);
18  if (fieldsChunk->getSerializedBytes() != nullptr) {
19  CHUNK_CHECK_USAGE(B(fieldsChunk->getSerializedBytes()->size()) == chunk->getChunkLength(), "serialized length is incorrect: serialized=%ld, chunk=%ld", fieldsChunk->getSerializedBytes()->size(), B(chunk->getChunkLength()).get());
20  stream.writeBytes(*fieldsChunk->getSerializedBytes(), offset, length == b(-1) ? chunk->getChunkLength() - offset : length);
21  }
22  else if (offset == b(0) && (length == b(-1) || length == chunk->getChunkLength())) {
23  auto startPosition = stream.getLength();
24  serialize(stream, fieldsChunk);
25  auto endPosition = stream.getLength();
26  auto serializedLength = endPosition - startPosition;
27  ChunkSerializer::totalSerializedLength += serializedLength;
28  auto serializedBytes = new std::vector<uint8_t>();
29  stream.copyData(*serializedBytes, startPosition, serializedLength);
30  fieldsChunk->setSerializedBytes(serializedBytes);
31  CHUNK_CHECK_USAGE(B(serializedBytes->size()) == chunk->getChunkLength(), "serialized length is incorrect: serialized=%ld, chunk=%ld", serializedBytes->size(), B(chunk->getChunkLength()).get());
32  }
33  else {
34  MemoryOutputStream chunkStream(fieldsChunk->getChunkLength());
35  serialize(chunkStream, fieldsChunk);
36  stream.writeBytes(chunkStream.getData(), offset, length == b(-1) ? chunk->getChunkLength() - offset : length);
37  ChunkSerializer::totalSerializedLength += chunkStream.getLength();
38  auto serializedBytes = new std::vector<uint8_t>();
39  chunkStream.copyData(*serializedBytes);
40  fieldsChunk->setSerializedBytes(serializedBytes);
41  CHUNK_CHECK_USAGE(B(serializedBytes->size()) == chunk->getChunkLength(), "serialized length is incorrect: serialized=%ld, chunk=%ld", serializedBytes->size(), B(chunk->getChunkLength()).get());
42  }
43 }

The documentation for this class was generated from the following files:
inet::FieldsChunkSerializer::serialize
virtual void serialize(MemoryOutputStream &stream, const Ptr< const Chunk > &chunk) const =0
Serializes a chunk into a stream by writing all bytes representing the chunk at the end of the stream...
inet::units::units::B
intscale< b, 1, 8 > B
Definition: Units.h:1168
CHUNK_CHECK_USAGE
#define CHUNK_CHECK_USAGE(condition, format,...)
Definition: Chunk.h:42
inet::ChunkSerializer::totalSerializedLength
static b totalSerializedLength
Definition: ChunkSerializer.h:20
inet::FieldsChunkSerializer::deserialize
virtual const Ptr< Chunk > deserialize(MemoryInputStream &stream) const =0
Deserializes a chunk from a stream by reading the bytes at the current position of the stream.
inet::units::values::b
value< int64_t, units::b > b
Definition: Units.h:1241
inet::ChunkSerializer::totalDeserializedLength
static b totalDeserializedLength
Definition: ChunkSerializer.h:21