INET Framework for OMNeT++/OMNEST
inet::ProbabilisticProtocolDissector Class Reference

#include <ProbabilisticProtocolDissector.h>

Inheritance diagram for inet::ProbabilisticProtocolDissector:
inet::ProtocolDissector

Public Member Functions

virtual void dissect (Packet *packet, const Protocol *protocol, ICallback &callback) const override
 Dissects the packet according to the protocol implemented by this ProtocolDissector. More...
 

Member Function Documentation

◆ dissect()

void inet::ProbabilisticProtocolDissector::dissect ( Packet packet,
const Protocol protocol,
ICallback callback 
) const
overridevirtual

Dissects the packet according to the protocol implemented by this ProtocolDissector.

Implements inet::ProtocolDissector.

18 {
19  auto header = packet->popAtFront<ProbabilisticBroadcastHeader>();
20  auto trailerPopOffset = packet->getBackOffset();
21  auto payloadEndOffset = packet->getFrontOffset() + header->getPayloadLengthField();
22  callback.startProtocolDataUnit(&Protocol::probabilistic);
23  bool incorrect = (payloadEndOffset > trailerPopOffset);
24  if (incorrect) {
25  callback.markIncorrect();
26  payloadEndOffset = trailerPopOffset;
27  }
28  callback.visitChunk(header, &Protocol::probabilistic);
29  packet->setBackOffset(payloadEndOffset);
30  callback.dissectPacket(packet, header->getProtocol());
31  if (incorrect && packet->getDataLength() > b(0))
32  callback.dissectPacket(packet, nullptr);
33  ASSERT(packet->getDataLength() == B(0));
34  packet->setFrontOffset(payloadEndOffset);
35  packet->setBackOffset(trailerPopOffset);
36  callback.endProtocolDataUnit(&Protocol::probabilistic);
37 }

The documentation for this class was generated from the following files:
inet::units::units::B
intscale< b, 1, 8 > B
Definition: Units.h:1168
inet::units::values::b
value< int64_t, units::b > b
Definition: Units.h:1241
inet::Protocol::probabilistic
static const Protocol probabilistic
Definition: Protocol.h:129