INET Framework for OMNeT++/OMNEST
inet::queueing::PacketProcessorBase Class Reference

#include <PacketProcessorBase.h>

Inheritance diagram for inet::queueing::PacketProcessorBase:
inet::queueing::IPacketProcessor inet::StringFormat::IDirectiveResolver inet::ClockUserModuleMixin< PacketProcessorBase > inet::DscpMarker inet::NetworkInterface inet::PacketDestreamer inet::PacketMeterBase inet::queueing::EmptyPacketSource inet::queueing::PacketBufferBase inet::queueing::PacketClassifierBase inet::queueing::PacketCloner inet::queueing::PacketDemultiplexer inet::queueing::PacketDuplicatorBase inet::queueing::PacketFilterBase inet::queueing::PacketFlowBase inet::queueing::PacketMultiplexer inet::queueing::PacketPullerBase inet::queueing::PacketPusherBase inet::queueing::PacketQueueBase inet::queueing::PacketSchedulerBase inet::queueing::PacketSendToPush inet::queueing::PacketServerBase inet::queueing::PacketSinkBase inet::queueing::PacketSourceBase inet::queueing::TokenGeneratorBase inet::OperationalMixin< PacketProcessorBase >

Public Member Functions

virtual bool supportsPacketSending (cGate *gate) const override
 Returns true if the processor supports sending packets at the given gate. More...
 
virtual bool supportsPacketPassing (cGate *gate) const override
 Returns true if the processor supports passing packets as a whole at the given gate. More...
 
virtual bool supportsPacketStreaming (cGate *gate) const override
 Returns true if the processor supports streaming packets at the given gate. More...
 
virtual const char * resolveDirective (char directive) const override
 
- Public Member Functions inherited from inet::queueing::IPacketProcessor
virtual ~IPacketProcessor ()
 
virtual bool supportsPacketPushing (cGate *gate) const =0
 Returns true if the processor supports pushing packets at the given gate. More...
 
virtual bool supportsPacketPulling (cGate *gate) const =0
 Returns true if the processor supports pulling packets at the given gate. More...
 

Protected Types

enum  Action { PUSH, PULL }
 

Protected Member Functions

virtual int numInitStages () const override
 
virtual void initialize (int stage) override
 
virtual void refreshDisplay () const override
 
virtual void handlePacketProcessed (Packet *packet)
 
virtual void checkPacketOperationSupport (cGate *gate) const
 
virtual void checkPacketOperationSupport (cGate *startGate, cGate *endGate) const
 
virtual void animate (Packet *packet, cGate *gate, const SendOptions &sendOptions, Action action) const
 
virtual void animatePacket (Packet *packet, cGate *gate, Action action) const
 
virtual void animatePacketStart (Packet *packet, cGate *gate, bps datarate, long transmissionId, Action action) const
 
virtual void animatePacketStart (Packet *packet, cGate *gate, bps datarate, const SendOptions &sendOptions, Action action) const
 
virtual void animatePacketEnd (Packet *packet, cGate *gate, long transmissionId, Action action) const
 
virtual void animatePacketEnd (Packet *packet, cGate *gate, const SendOptions &sendOptions, Action action) const
 
virtual void animatePacketProgress (Packet *packet, cGate *gate, bps datarate, b position, b extraProcessableLength, long transmissionId, Action action) const
 
virtual void animatePacketProgress (Packet *packet, cGate *gate, bps datarate, b position, b extraProcessableLength, const SendOptions &sendOptions, Action action) const
 
virtual void pushOrSendPacket (Packet *packet, cGate *gate, IPassivePacketSink *consumer)
 
virtual void pushOrSendPacketStart (Packet *packet, cGate *gate, IPassivePacketSink *consumer, bps datarate, int transmissionId)
 
virtual void pushOrSendPacketEnd (Packet *packet, cGate *gate, IPassivePacketSink *consumer, int transmissionId)
 
virtual void pushOrSendPacketProgress (Packet *packet, cGate *gate, IPassivePacketSink *consumer, bps datarate, b position, b extraProcessableLength, int transmissionId)
 
virtual void animatePush (Packet *packet, cGate *gate, const SendOptions &sendOptions) const
 
virtual void animatePushPacket (Packet *packet, cGate *gate) const
 
virtual void animatePushPacketStart (Packet *packet, cGate *gate, bps datarate, long transmissionId) const
 
virtual void animatePushPacketStart (Packet *packet, cGate *gate, bps datarate, const SendOptions &sendOptions) const
 
virtual void animatePushPacketEnd (Packet *packet, cGate *gate, long transmissionId) const
 
virtual void animatePushPacketEnd (Packet *packet, cGate *gate, const SendOptions &sendOptions) const
 
virtual void animatePushPacketProgress (Packet *packet, cGate *gate, bps datarate, b position, b extraProcessableLength, long transmissionId) const
 
virtual void animatePushPacketProgress (Packet *packet, cGate *gate, bps datarate, b position, b extraProcessableLength, const SendOptions &sendOptions) const
 
virtual void animatePull (Packet *packet, cGate *gate, const SendOptions &sendOptions) const
 
virtual void animatePullPacket (Packet *packet, cGate *gate) const
 
virtual void animatePullPacketStart (Packet *packet, cGate *gate, bps datarate, long transmissionId) const
 
virtual void animatePullPacketStart (Packet *packet, cGate *gate, bps datarate, const SendOptions &sendOptions) const
 
virtual void animatePullPacketEnd (Packet *packet, cGate *gate, long transmissionId) const
 
virtual void animatePullPacketEnd (Packet *packet, cGate *gate, const SendOptions &sendOptions) const
 
virtual void animatePullPacketProgress (Packet *packet, cGate *gate, bps datarate, b position, b extraProcessableLength, long transmissionId) const
 
virtual void animatePullPacketProgress (Packet *packet, cGate *gate, bps datarate, b position, b extraProcessableLength, const SendOptions &sendOptions) const
 
virtual void dropPacket (Packet *packet, PacketDropReason reason, int limit=-1)
 
virtual void updateDisplayString () const
 

Protected Attributes

const char * displayStringTextFormat = nullptr
 
int numProcessedPackets = -1
 
b processedTotalLength = b(-1)
 

Member Enumeration Documentation

◆ Action

Enumerator
PUSH 
PULL 
23  {
24  PUSH,
25  PULL,
26  };

Member Function Documentation

◆ animate()

void inet::queueing::PacketProcessorBase::animate ( Packet packet,
cGate *  gate,
const SendOptions &  sendOptions,
Action  action 
) const
protectedvirtual
201 {
202  packet->setIsUpdate(sendOptions.isUpdate);
203  packet->setTransmissionId(sendOptions.transmissionId_);
204  if (sendOptions.isUpdate && sendOptions.transmissionId_ == -1)
205  throw cRuntimeError("No transmissionId specified in SendOptions for a transmission update");
206  packet->setDuration(SIMTIME_ZERO);
207  packet->setRemainingDuration(SIMTIME_ZERO);
208  auto endGate = gate->getPathEndGate();
209  packet->setArrival(endGate->getOwnerModule()->getId(), endGate->getId(), simTime());
210  packet->setSentFrom(gate->getOwnerModule(), gate->getId(), simTime());
211 
212 #ifdef INET_WITH_SELFDOC
214  auto from = gate->getOwnerModule();
215  auto to = endGate->getOwnerModule();
216  auto ctrl = packet->getControlInfo();
217  {
218  std::ostringstream os;
219  os << "=SelfDoc={ " << SelfDoc::keyVal("module", from->getComponentType()->getFullName())
220  << ", " << SelfDoc::keyVal("action", action == PUSH ? "PUSH_OUT" : "PULLED_OUT")
221  << ", " << SelfDoc::val("details") << " : {"
222  << SelfDoc::keyVal("gate", SelfDoc::gateInfo(gate))
223  << ", "<< SelfDoc::keyVal("msg", opp_typename(typeid(*packet)))
224  << ", " << SelfDoc::keyVal("kind", SelfDoc::kindToStr(packet->getKind(), gate->getProperties(), "messageKinds", endGate->getProperties(), "messageKinds"))
225  << ", " << SelfDoc::keyVal("ctrl", ctrl ? opp_typename(typeid(*ctrl)) : "")
226  << ", " << SelfDoc::tagsToJson("tags", packet)
227  << " } }"
228  ;
229  globalSelfDoc.insert(os.str());
230  }
231  {
232  std::ostringstream os;
233  os << "=SelfDoc={ " << SelfDoc::keyVal("module", to->getComponentType()->getFullName())
234  << ", " << SelfDoc::keyVal("action", action == PUSH ? "PUSHED_IN" : "PULL_IN")
235  << ", " << SelfDoc::val("details") << " : {"
236  << SelfDoc::keyVal("gate", SelfDoc::gateInfo(endGate))
237  << ", " << SelfDoc::keyVal("msg", opp_typename(typeid(*packet)))
238  << ", " << SelfDoc::keyVal("kind", SelfDoc::kindToStr(packet->getKind(), endGate->getProperties(), "messageKinds", gate->getProperties(), "messageKinds"))
239  << ", " << SelfDoc::keyVal("ctrl", ctrl ? opp_typename(typeid(*ctrl)) : "")
240  << ", " << SelfDoc::tagsToJson("tags", packet)
241  << " } }"
242  ;
243  globalSelfDoc.insert(os.str());
244  }
245  }
246 #endif // INET_WITH_SELFDOC
247 
248  auto envir = getEnvir();
249  if (gate->getNextGate() != nullptr) {
250  envir->beginSend(packet, sendOptions);
251  while (gate->getNextGate() != nullptr) {
252  ChannelResult result;
253  result.duration = sendOptions.duration_;
254  result.remainingDuration = sendOptions.remainingDuration;
255  envir->messageSendHop(packet, gate, result);
256  gate = gate->getNextGate();
257  }
258  envir->endSend(packet);
259  }
260  envir->pausePoint();
261 }

Referenced by animatePacket(), animatePacketEnd(), animatePacketProgress(), animatePacketStart(), animatePull(), and animatePush().

◆ animatePacket()

void inet::queueing::PacketProcessorBase::animatePacket ( Packet packet,
cGate *  gate,
Action  action 
) const
protectedvirtual
264 {
265  SendOptions sendOptions;
266  sendOptions.duration_ = 0;
267  sendOptions.remainingDuration = 0;
268  animate(packet, gate, sendOptions, action);
269 }

Referenced by animatePullPacket(), and animatePushPacket().

◆ animatePacketEnd() [1/2]

void inet::queueing::PacketProcessorBase::animatePacketEnd ( Packet packet,
cGate *  gate,
const SendOptions &  sendOptions,
Action  action 
) const
protectedvirtual
294 {
295  animate(packet, gate, sendOptions, action);
296 }

◆ animatePacketEnd() [2/2]

void inet::queueing::PacketProcessorBase::animatePacketEnd ( Packet packet,
cGate *  gate,
long  transmissionId,
Action  action 
) const
protectedvirtual
287 {
288  SendOptions sendOptions;
289  sendOptions.updateTx(transmissionId, 0);
290  animatePacketEnd(packet, gate, sendOptions, action);
291 }

Referenced by animatePullPacketEnd(), and animatePushPacketEnd().

◆ animatePacketProgress() [1/2]

void inet::queueing::PacketProcessorBase::animatePacketProgress ( Packet packet,
cGate *  gate,
bps  datarate,
b  position,
b  extraProcessableLength,
const SendOptions &  sendOptions,
Action  action 
) const
protectedvirtual
306 {
307  animate(packet, gate, sendOptions, action);
308 }

◆ animatePacketProgress() [2/2]

void inet::queueing::PacketProcessorBase::animatePacketProgress ( Packet packet,
cGate *  gate,
bps  datarate,
b  position,
b  extraProcessableLength,
long  transmissionId,
Action  action 
) const
protectedvirtual
299 {
300  SendOptions sendOptions;
301  sendOptions.transmissionId(transmissionId);
302  animatePacketProgress(packet, gate, datarate, position, extraProcessableLength, sendOptions, action);
303 }

Referenced by animatePullPacketProgress(), and animatePushPacketProgress().

◆ animatePacketStart() [1/2]

void inet::queueing::PacketProcessorBase::animatePacketStart ( Packet packet,
cGate *  gate,
bps  datarate,
const SendOptions &  sendOptions,
Action  action 
) const
protectedvirtual
282 {
283  animate(packet, gate, sendOptions, action);
284 }

◆ animatePacketStart() [2/2]

void inet::queueing::PacketProcessorBase::animatePacketStart ( Packet packet,
cGate *  gate,
bps  datarate,
long  transmissionId,
Action  action 
) const
protectedvirtual
272 {
273  simtime_t duration = s(packet->getDataLength() / datarate).get();
274  SendOptions sendOptions;
275  sendOptions.duration_ = duration;
276  sendOptions.remainingDuration = duration;
277  sendOptions.transmissionId(transmissionId);
278  animatePacketStart(packet, gate, datarate, sendOptions, action);
279 }

Referenced by animatePullPacketStart(), and animatePushPacketStart().

◆ animatePull()

void inet::queueing::PacketProcessorBase::animatePull ( Packet packet,
cGate *  gate,
const SendOptions &  sendOptions 
) const
protectedvirtual
351 {
352  animate(packet, gate, sendOptions, PULL);
353 }

◆ animatePullPacket()

◆ animatePullPacketEnd() [1/2]

void inet::queueing::PacketProcessorBase::animatePullPacketEnd ( Packet packet,
cGate *  gate,
const SendOptions &  sendOptions 
) const
protectedvirtual
376 {
377  animatePacketEnd(packet, gate, sendOptions, PULL);
378 }

◆ animatePullPacketEnd() [2/2]

void inet::queueing::PacketProcessorBase::animatePullPacketEnd ( Packet packet,
cGate *  gate,
long  transmissionId 
) const
protectedvirtual

◆ animatePullPacketProgress() [1/2]

void inet::queueing::PacketProcessorBase::animatePullPacketProgress ( Packet packet,
cGate *  gate,
bps  datarate,
b  position,
b  extraProcessableLength,
const SendOptions &  sendOptions 
) const
protectedvirtual
386 {
387  animatePacketProgress(packet, gate, datarate, position, extraProcessableLength, sendOptions, PULL);
388 }

◆ animatePullPacketProgress() [2/2]

void inet::queueing::PacketProcessorBase::animatePullPacketProgress ( Packet packet,
cGate *  gate,
bps  datarate,
b  position,
b  extraProcessableLength,
long  transmissionId 
) const
protectedvirtual

◆ animatePullPacketStart() [1/2]

void inet::queueing::PacketProcessorBase::animatePullPacketStart ( Packet packet,
cGate *  gate,
bps  datarate,
const SendOptions &  sendOptions 
) const
protectedvirtual
366 {
367  animatePacketStart(packet, gate, datarate, sendOptions, PULL);
368 }

◆ animatePullPacketStart() [2/2]

void inet::queueing::PacketProcessorBase::animatePullPacketStart ( Packet packet,
cGate *  gate,
bps  datarate,
long  transmissionId 
) const
protectedvirtual

◆ animatePush()

void inet::queueing::PacketProcessorBase::animatePush ( Packet packet,
cGate *  gate,
const SendOptions &  sendOptions 
) const
protectedvirtual
311 {
312  animate(packet, gate, sendOptions, PUSH);
313 }

◆ animatePushPacket()

void inet::queueing::PacketProcessorBase::animatePushPacket ( Packet packet,
cGate *  gate 
) const
protectedvirtual
316 {
317  animatePacket(packet, gate, PUSH);
318 }

Referenced by pushOrSendPacket().

◆ animatePushPacketEnd() [1/2]

void inet::queueing::PacketProcessorBase::animatePushPacketEnd ( Packet packet,
cGate *  gate,
const SendOptions &  sendOptions 
) const
protectedvirtual
336 {
337  animatePacketEnd(packet, gate, sendOptions, PUSH);
338 }

◆ animatePushPacketEnd() [2/2]

void inet::queueing::PacketProcessorBase::animatePushPacketEnd ( Packet packet,
cGate *  gate,
long  transmissionId 
) const
protectedvirtual
331 {
332  animatePacketEnd(packet, gate, transmissionId, PUSH);
333 }

Referenced by pushOrSendPacketEnd(), and pushOrSendPacketProgress().

◆ animatePushPacketProgress() [1/2]

void inet::queueing::PacketProcessorBase::animatePushPacketProgress ( Packet packet,
cGate *  gate,
bps  datarate,
b  position,
b  extraProcessableLength,
const SendOptions &  sendOptions 
) const
protectedvirtual
346 {
347  animatePacketProgress(packet, gate, datarate, position, extraProcessableLength, sendOptions, PUSH);
348 }

◆ animatePushPacketProgress() [2/2]

void inet::queueing::PacketProcessorBase::animatePushPacketProgress ( Packet packet,
cGate *  gate,
bps  datarate,
b  position,
b  extraProcessableLength,
long  transmissionId 
) const
protectedvirtual
341 {
342  animatePacketProgress(packet, gate, datarate, position, extraProcessableLength, transmissionId, PUSH);
343 }

Referenced by pushOrSendPacketProgress().

◆ animatePushPacketStart() [1/2]

void inet::queueing::PacketProcessorBase::animatePushPacketStart ( Packet packet,
cGate *  gate,
bps  datarate,
const SendOptions &  sendOptions 
) const
protectedvirtual
326 {
327  animatePacketStart(packet, gate, datarate, sendOptions, PUSH);
328 }

◆ animatePushPacketStart() [2/2]

void inet::queueing::PacketProcessorBase::animatePushPacketStart ( Packet packet,
cGate *  gate,
bps  datarate,
long  transmissionId 
) const
protectedvirtual
321 {
322  animatePacketStart(packet, gate, datarate, transmissionId, PUSH);
323 }

Referenced by pushOrSendPacketProgress(), and pushOrSendPacketStart().

◆ checkPacketOperationSupport() [1/2]

void inet::queueing::PacketProcessorBase::checkPacketOperationSupport ( cGate *  gate) const
protectedvirtual
41 {
42  auto startGate = findConnectedGate<IPacketProcessor>(gate, -1);
43  auto endGate = findConnectedGate<IPacketProcessor>(gate, 1);
44  if (gate->getPreviousGate() != nullptr)
45  checkPacketOperationSupport(startGate, gate);
46  if (gate->getNextGate() != nullptr)
47  checkPacketOperationSupport(gate, endGate);
48 }

Referenced by inet::queueing::ActivePacketSinkBase::initialize(), inet::queueing::ActivePacketSourceBase::initialize(), inet::queueing::EmptyPacketSource::initialize(), inet::queueing::PacketSendToPush::initialize(), inet::queueing::PassivePacketSinkBase::initialize(), inet::queueing::PassivePacketSourceBase::initialize(), inet::queueing::PcapFilePacketConsumer::initialize(), inet::queueing::PassivePacketSink::initialize(), inet::queueing::PacketDuplicatorBase::initialize(), inet::PacketMeterBase::initialize(), inet::queueing::PacketDemultiplexer::initialize(), inet::queueing::PacketServerBase::initialize(), inet::queueing::PacketPusherBase::initialize(), inet::queueing::PacketPullerBase::initialize(), inet::queueing::MarkovScheduler::initialize(), inet::queueing::CompoundPacketQueueBase::initialize(), inet::queueing::MarkovClassifier::initialize(), inet::queueing::PacketFlowBase::initialize(), inet::queueing::PacketMultiplexer::initialize(), inet::PacketDestreamer::initialize(), inet::queueing::PacketSchedulerBase::initialize(), inet::queueing::PacketClassifierBase::initialize(), inet::PacketReceiverBase::initialize(), inet::queueing::PacketQueue::initialize(), inet::queueing::PacketFilterBase::initialize(), inet::PacketStreamer::initialize(), inet::PreemptableStreamer::initialize(), and inet::PacketTransmitterBase::initialize().

◆ checkPacketOperationSupport() [2/2]

void inet::queueing::PacketProcessorBase::checkPacketOperationSupport ( cGate *  startGate,
cGate *  endGate 
) const
protectedvirtual
51 {
52  auto startElement = startGate == nullptr ? nullptr : check_and_cast<IPacketProcessor *>(startGate->getOwnerModule());
53  auto endElement = endGate == nullptr ? nullptr : check_and_cast<IPacketProcessor *>(endGate->getOwnerModule());
54  if (startElement != nullptr && endElement != nullptr) {
55  bool startSending = startElement->supportsPacketSending(startGate);
56  bool startPushing = startElement->supportsPacketPushing(startGate);
57  bool startPulling = startElement->supportsPacketPulling(startGate);
58  bool startPassing = startElement->supportsPacketPassing(startGate);
59  bool startStreaming = startElement->supportsPacketStreaming(startGate);
60  bool startOnlySending = startSending && !startPushing && !startPulling;
61  bool endSending = endElement->supportsPacketSending(endGate);
62  bool endPushing = endElement->supportsPacketPushing(endGate);
63  bool endPulling = endElement->supportsPacketPulling(endGate);
64  bool endPassing = endElement->supportsPacketPassing(endGate);
65  bool endStreaming = endElement->supportsPacketStreaming(endGate);
66  bool endOnlySending = endSending && !endPushing && !endPulling;
67  bool bothPushing = startPushing && endPushing;
68  bool bothPulling = startPulling && endPulling;
69  bool bothPassing = startPassing && endPassing;
70  bool bothStreaming = startStreaming && endStreaming;
71  bool eitherPushing = startPushing || endPushing;
72  bool eitherPulling = startPulling || endPulling;
73  bool eitherPassing = startPassing || endPassing;
74  bool eitherStreaming = startStreaming || endStreaming;
75  if (startOnlySending || endOnlySending) {
76  if (!startSending)
77  throw cRuntimeError(startGate->getOwnerModule(), "doesn't support packet sending on gate %s", startGate->getFullPath().c_str());
78  if (!endSending)
79  throw cRuntimeError(endGate->getOwnerModule(), "doesn't support packet sending on gate %s", endGate->getFullPath().c_str());
80  }
81  else if (!bothPushing && !bothPulling) {
82  if (eitherPushing) {
83  if (startPushing)
84  throw cRuntimeError(endGate->getOwnerModule(), "doesn't support packet pushing on gate %s", endGate->getFullPath().c_str());
85  if (endPushing)
86  throw cRuntimeError(startGate->getOwnerModule(), "doesn't support packet pushing on gate %s", startGate->getFullPath().c_str());
87  }
88  else if (eitherPulling) {
89  if (startPulling)
90  throw cRuntimeError(endGate->getOwnerModule(), "doesn't support packet pulling on gate %s", endGate->getFullPath().c_str());
91  if (endPulling)
92  throw cRuntimeError(startGate->getOwnerModule(), "doesn't support packet pulling on gate %s", startGate->getFullPath().c_str());
93  }
94  else
95  throw cRuntimeError(endGate->getOwnerModule(), "neither supports packet pushing nor packet pulling on gates %s - %s", startGate->getFullPath().c_str(), endGate->getFullPath().c_str());
96  }
97  if (!bothPassing && !bothStreaming) {
98  if (eitherPassing) {
99  if (startPassing)
100  throw cRuntimeError(endGate->getOwnerModule(), "doesn't support packet passing on gate %s", endGate->getFullPath().c_str());
101  if (endPassing)
102  throw cRuntimeError(startGate->getOwnerModule(), "doesn't support packet passing on gate %s", startGate->getFullPath().c_str());
103  }
104  else if (eitherStreaming) {
105  if (startStreaming)
106  throw cRuntimeError(endGate->getOwnerModule(), "doesn't support packet streaming on gate %s", endGate->getFullPath().c_str());
107  if (endStreaming)
108  throw cRuntimeError(startGate->getOwnerModule(), "doesn't support packet streaming on gate %s", startGate->getFullPath().c_str());
109  }
110  else
111  throw cRuntimeError(endGate->getOwnerModule(), "neither supports packet passing nor packet streaming on gates %s - %s", startGate->getFullPath().c_str(), endGate->getFullPath().c_str());
112  }
113  }
114  else if (startElement != nullptr && endElement == nullptr) {
115  if (!startElement->supportsPacketSending(startGate))
116  throw cRuntimeError(startGate->getOwnerModule(), "doesn't support packet sending on gate %s", startGate->getFullPath().c_str());
117  }
118  else if (startElement == nullptr && endElement != nullptr) {
119  if (!endElement->supportsPacketSending(endGate))
120  throw cRuntimeError(endGate->getOwnerModule(), "doesn't support packet sending on gate %s", endGate->getFullPath().c_str());
121  }
122  else
123  throw cRuntimeError("Cannot check packet operation support on gates %s - %s", startGate->getFullPath().c_str(), endGate->getFullPath().c_str());
124 }

◆ dropPacket()

void inet::queueing::PacketProcessorBase::dropPacket ( Packet packet,
PacketDropReason  reason,
int  limit = -1 
)
protectedvirtual

◆ handlePacketProcessed()

void inet::queueing::PacketProcessorBase::handlePacketProcessed ( Packet packet)
protectedvirtual

Reimplemented in inet::EthernetFragmentFcsInserter, and inet::physicallayer::EthernetFragmentPhyHeaderInserter.

35 {
37  processedTotalLength += packet->getDataLength();
38 }

Referenced by inet::StreamingTransmitter::abortTx(), inet::StreamThroughTransmitter::abortTx(), inet::queueing::PacketFlowBase::endPacketStreaming(), inet::queueing::PacketMultiplexer::endPacketStreaming(), inet::queueing::PacketFilterBase::endPacketStreaming(), inet::queueing::PacketSchedulerBase::endPacketStreaming(), inet::queueing::PacketClassifierBase::endPacketStreaming(), inet::StreamingTransmitter::endTx(), inet::PacketTransmitter::endTx(), inet::StreamThroughTransmitter::endTx(), inet::queueing::PacketSendToPush::handleMessage(), inet::InterpacketGapInserter::handleMessage(), inet::EthernetFragmentFcsInserter::handlePacketProcessed(), inet::StreamIdentifier::processPacket(), inet::StreamDecoder::processPacket(), inet::PacketDestreamer::pullPacket(), inet::queueing::PacketFlowBase::pullPacket(), inet::queueing::PacketSchedulerBase::pullPacket(), inet::queueing::PacketFilterBase::pullPacket(), inet::PacketStreamer::pullPacketEnd(), inet::PreemptableStreamer::pullPacketEnd(), inet::InterpacketGapInserter::pushOrSendOrSchedulePacketProgress(), inet::queueing::PacketPushToSend::pushPacket(), inet::queueing::PacketDuplicator::pushPacket(), inet::StreamSplitter::pushPacket(), inet::queueing::PacketDelayer::pushPacket(), inet::EthernetSocketPacketProcessor::pushPacket(), inet::Ieee8021qSocketPacketProcessor::pushPacket(), inet::queueing::PacketCloner::pushPacket(), inet::InterpacketGapInserter::pushPacket(), inet::queueing::PacketMultiplexer::pushPacket(), inet::queueing::PacketFlowBase::pushPacket(), inet::queueing::PacketClassifierBase::pushPacket(), inet::queueing::PacketFilterBase::pushPacket(), inet::StreamThroughReceiver::receivePacketEnd(), inet::DestreamingReceiver::receivePacketEnd(), inet::PacketReceiver::receiveSignal(), and inet::queueing::PreemptingServer::startStreaming().

◆ initialize()

void inet::queueing::PacketProcessorBase::initialize ( int  stage)
overrideprotectedvirtual

Reimplemented in inet::NetworkInterface, inet::MultiFieldClassifier, inet::BehaviorAggregateClassifier, inet::DscpMarker, inet::VirtualTunnel, inet::TwoRateThreeColorMeter, inet::queueing::RedDropper, inet::SingleRateThreeColorMeter, inet::PacketTransmitterBase, inet::PreemptableStreamer, inet::OperationalMixin< PacketProcessorBase >, inet::StreamDecoder, inet::queueing::CreditBasedGate, inet::queueing::FlowMeasurementRecorder, inet::PacketStreamer, inet::queueing::MultiTokenBucketMixin< PacketMeterBase >, inet::queueing::MultiTokenBucketMixin< PacketClassifierBase >, inet::TokenBucketMeter, inet::PacketReceiverBase, inet::queueing::PacketFilterBase, inet::queueing::PacketQueue, inet::queueing::PacketClassifierBase, inet::queueing::PacketSchedulerBase, inet::PacketDestreamer, inet::EthernetCutthroughSource, inet::queueing::PacketFlowBase, inet::queueing::PacketGateBase, inet::queueing::PacketMultiplexer, inet::queueing::FlowMeasurementStarter, inet::queueing::MarkovClassifier, inet::queueing::CompoundPacketQueueBase, inet::RelayInterfaceSelector, inet::InterpacketGapInserter, inet::StreamEncoder, inet::EligibilityTimeMeter, inet::queueing::MarkovScheduler, inet::EligibilityTimeGate, inet::queueing::OrdinalBasedDuplicator, inet::queueing::OrdinalBasedDropper, inet::queueing::PacketBasedTokenGenerator, inet::PacketEmitter, inet::StreamThroughTransmitter, inet::queueing::PacketQueueBase, inet::queueing::PacketTaggerBase, inet::queueing::PacketBuffer, inet::queueing::PacketPullerBase, inet::queueing::PacketPusherBase, inet::queueing::TokenGeneratorBase, inet::queueing::WrrClassifier, inet::queueing::PeriodicGate, inet::queueing::WrrScheduler, inet::queueing::PreemptingServer, inet::RelayInterfaceLearner, inet::Ieee8021qTagEpdHeaderInserter, inet::Ieee8021qTagTpidHeaderInserter, inet::AggregatorBase, inet::queueing::PacketServerBase, inet::queueing::PacketSourceBase, inet::queueing::PacketCloner, inet::queueing::PacketDemultiplexer, inet::queueing::SlidingWindowRateMeter, inet::queueing::TokenBasedServer, inet::queueing::TokenBucketMixin< PacketMeterBase >, inet::queueing::TokenBucketMixin< PacketClassifierBase >, inet::ExtInterface, inet::VlanIndFilter, inet::VlanReqFilter, inet::VlanReqMapper, inet::PacketMeterBase, inet::Resending, inet::StreamIdentifier, inet::StreamMerger, inet::queueing::PacketDuplicatorBase, inet::queueing::ExponentialRateMeter, inet::queueing::PassivePacketSource, inet::queueing::QueueBasedTokenGenerator, inet::queueing::TokenBucketMeterMixin< MultiTokenBucketMixin< PacketMeterBase > >, inet::queueing::TokenBucketMeterMixin< TokenBucketMixin< PacketMeterBase > >, inet::EthernetAddressChecker, inet::EthernetCutthroughInterface, inet::EthernetCutthroughSink, inet::EthernetMacHeaderChecker, inet::Ieee8021qTagEpdHeaderChecker, inet::SendWithAcknowledge, inet::PaddingInserter, inet::DefragmenterBase, inet::queueing::DynamicClassifier, inet::queueing::PacketGate, inet::queueing::PassivePacketSink, inet::queueing::PcapFilePacketConsumer, inet::queueing::TimeBasedTokenGenerator, inet::EthernetAddressInserter, inet::EthernetMacHeaderInserter, inet::EthernetSocketCommandProcessor, inet::Ieee8021qSocketCommandProcessor, inet::Ieee8022LlcSocketCommandProcessor, inet::FragmenterBase, inet::EligibilityTimeFilter, inet::queueing::PacketBufferBase, inet::queueing::PassivePacketSinkBase, inet::queueing::PassivePacketSourceBase, inet::queueing::LabelScheduler, inet::queueing::ActivePacketSink, inet::queueing::ActivePacketSource, inet::EthernetSocketPacketProcessor, inet::Ieee8021qSocketPacketProcessor, inet::Ieee8021qTagTpidHeaderChecker, inet::Ieee8021rTagEpdHeaderChecker, inet::Ieee8021rTagEpdHeaderInserter, inet::Ieee8022LlcSocketPacketProcessor, inet::CrcInserterBase, inet::FcsInserterBase, inet::CrcHeaderChecker, inet::CrcHeaderInserter, inet::FcsHeaderChecker, inet::FcsHeaderInserter, inet::ProtocolChecker, inet::Forwarding, inet::FragmentNumberHeaderBasedDefragmenter, inet::FragmentNumberHeaderBasedFragmenter, inet::FragmentNumberHeaderChecker, inet::FragmentNumberHeaderInserter, inet::Reordering, inet::StreamClassifier, inet::StreamFilter, inet::StreamSplitter, inet::ReceiveAtL3Address, inet::SendToL3Address, inet::SendToMacAddress, inet::queueing::ActivePacketSinkBase, inet::queueing::ActivePacketSourceBase, inet::queueing::ContentBasedClassifier, inet::queueing::PacketSendToPush, inet::queueing::LabelFilter, inet::queueing::StatisticalRateLimiter, inet::queueing::MultiTokenBucketMeter, inet::queueing::TokenBucketMeter, inet::queueing::ContentBasedScheduler, inet::queueing::PacketServer, inet::queueing::EmptyPacketSource, inet::queueing::TokenBucketClassifierMixin< TokenBucketMixin< PacketClassifierBase > >, inet::queueing::TokenBucketClassifierMixin< MultiTokenBucketMixin< PacketClassifierBase > >, inet::PcpClassifier, inet::PcpTrafficClassClassifier, inet::Ieee8022SnapChecker, inet::Ieee8022SnapInserter, inet::DeaggregatorBase, inet::SendWithHopLimit, inet::DuplicateRemoval, inet::ReceiveAtMacAddress, inet::ReceiveAtPort, inet::SendToPort, inet::queueing::PacketLabelerBase, inet::queueing::LabelClassifier, inet::queueing::PacketClassifier, inet::queueing::ContentBasedFilter, inet::queueing::PacketFilter, inet::queueing::ContentBasedLabeler, inet::queueing::ContentBasedTagger, inet::queueing::PacketLabeler, inet::queueing::PacketTagger, inet::queueing::PacketScheduler, inet::queueing::PriorityScheduler, inet::queueing::PcapFilePacketProducer, inet::Ieee8022LlcChecker, inet::Ieee8022LlcInserter, inet::queueing::SignalBasedTokenGenerator, inet::StreamingReceiverBase, inet::StreamingTransmitterBase, inet::queueing::MultiTokenBucketClassifier, inet::queueing::TokenBucketClassifier, inet::PacketDirectionReverser, inet::EthernetTypeOrLengthInserter, inet::Ieee8021aeTagEpdHeaderInserter, inet::ReceiveWithAcknowledge, inet::SubpacketLengthHeaderBasedDeaggregator, inet::ReceiveWithHopLimit, inet::queueing::InteractiveGate, inet::DestreamingReceiver, and inet::StreamThroughReceiver.

17 {
18  if (stage == INITSTAGE_LOCAL) {
19  displayStringTextFormat = par("displayStringTextFormat");
22  WATCH(numProcessedPackets);
23  WATCH(processedTotalLength);
24  }
25  else if (stage == INITSTAGE_LAST)
27 }

Referenced by inet::queueing::ActivePacketSinkBase::initialize(), inet::queueing::PacketSendToPush::initialize(), inet::queueing::EmptyPacketSource::initialize(), inet::queueing::PacketBufferBase::initialize(), inet::queueing::PassivePacketSinkBase::initialize(), inet::queueing::PacketDuplicatorBase::initialize(), inet::queueing::PacketDemultiplexer::initialize(), inet::queueing::PacketServerBase::initialize(), inet::queueing::PacketSourceBase::initialize(), inet::queueing::PacketCloner::initialize(), inet::queueing::TokenGeneratorBase::initialize(), inet::queueing::PacketPusherBase::initialize(), inet::queueing::PacketPullerBase::initialize(), inet::queueing::PacketQueueBase::initialize(), inet::queueing::PacketFlowBase::initialize(), inet::queueing::PacketMultiplexer::initialize(), inet::PacketDestreamer::initialize(), inet::queueing::PacketSchedulerBase::initialize(), inet::queueing::PacketClassifierBase::initialize(), inet::PacketReceiverBase::initialize(), inet::queueing::PacketFilterBase::initialize(), inet::DscpMarker::initialize(), and inet::MessageDispatcher::initialize().

◆ numInitStages()

virtual int inet::queueing::PacketProcessorBase::numInitStages ( ) const
inlineoverrideprotectedvirtual

◆ pushOrSendPacket()

void inet::queueing::PacketProcessorBase::pushOrSendPacket ( Packet packet,
cGate *  gate,
IPassivePacketSink consumer 
)
protectedvirtual
127 {
128  if (consumer != nullptr) {
129  animatePushPacket(packet, gate);
130  consumer->pushPacket(packet, findConnectedGate<IPacketProcessor>(gate));
131  }
132  else
133  send(packet, gate);
134 }

Referenced by inet::DefragmenterBase::defragmentPacket(), inet::queueing::PacketServer::endProcessingPacket(), inet::queueing::PacketDelayer::handleMessage(), inet::queueing::PacketSendToPush::handleMessage(), inet::queueing::PcapFilePacketProducer::handleMessage(), inet::Resending::handleMessage(), inet::InterpacketGapInserter::handleMessage(), inet::Resending::handlePushPacketProcessed(), inet::queueing::InstantServer::processPacket(), inet::SendWithHopLimit::processPacket(), inet::queueing::TokenBasedServer::processPackets(), inet::queueing::ActivePacketSource::producePacket(), inet::queueing::PacketDuplicator::pushPacket(), inet::StreamSplitter::pushPacket(), inet::DuplicateRemoval::pushPacket(), inet::DeaggregatorBase::pushPacket(), inet::EthernetSocketPacketProcessor::pushPacket(), inet::Reordering::pushPacket(), inet::Forwarding::pushPacket(), inet::Ieee8021qSocketPacketProcessor::pushPacket(), inet::FragmenterBase::pushPacket(), inet::queueing::PacketDuplicatorBase::pushPacket(), inet::AggregatorBase::pushPacket(), inet::queueing::PacketCloner::pushPacket(), inet::queueing::MarkovScheduler::pushPacket(), inet::InterpacketGapInserter::pushPacket(), inet::queueing::PacketMultiplexer::pushPacket(), inet::queueing::PacketFlowBase::pushPacket(), inet::queueing::PacketClassifierBase::pushPacket(), inet::queueing::PacketFilterBase::pushPacket(), inet::NetworkInterface::pushPacket(), inet::PacketDestreamer::pushPacketEnd(), inet::PacketReceiver::receiveSignal(), inet::RelayInterfaceSelector::sendPacket(), and inet::DestreamingReceiver::sendToUpperLayer().

◆ pushOrSendPacketEnd()

void inet::queueing::PacketProcessorBase::pushOrSendPacketEnd ( Packet packet,
cGate *  gate,
IPassivePacketSink consumer,
int  transmissionId 
)
protectedvirtual
155 {
156  // NOTE: duration is unknown due to arbitrarily changing datarate
157  SendOptions sendOptions;
158  sendOptions.updateTx(transmissionId, 0);
159  if (consumer != nullptr) {
160  animatePushPacketEnd(packet, gate, sendOptions);
161  consumer->pushPacketEnd(packet, findConnectedGate<IPacketProcessor>(gate));
162  }
163  else {
164  auto progressTag = packet->addTagIfAbsent<ProgressTag>();
165  progressTag->setDatarate(bps(NaN));
166  progressTag->setPosition(packet->getTotalLength());
167  send(packet, sendOptions, gate);
168  }
169 }

Referenced by inet::queueing::PreemptingServer::endStreaming(), inet::PacketStreamer::endStreaming(), inet::PreemptableStreamer::endStreaming(), inet::EthernetCutthroughSink::pushPacketEnd(), inet::EthernetCutthroughSource::pushPacketEnd(), inet::queueing::PacketFlowBase::pushPacketEnd(), inet::queueing::PacketMultiplexer::pushPacketEnd(), inet::queueing::PacketClassifierBase::pushPacketEnd(), inet::queueing::PacketFilterBase::pushPacketEnd(), inet::NetworkInterface::pushPacketEnd(), inet::queueing::PacketFlowBase::pushPacketProgress(), inet::StreamThroughReceiver::receivePacketEnd(), and inet::InterpacketGapInserter::receivePacketEnd().

◆ pushOrSendPacketProgress()

void inet::queueing::PacketProcessorBase::pushOrSendPacketProgress ( Packet packet,
cGate *  gate,
IPassivePacketSink consumer,
bps  datarate,
b  position,
b  extraProcessableLength,
int  transmissionId 
)
protectedvirtual
172 {
173  // NOTE: duration is unknown due to arbitrarily changing datarate
174  simtime_t remainingDuration = s((packet->getTotalLength() - position) / datarate).get();
175  SendOptions sendOptions;
176  sendOptions.updateTx(transmissionId, remainingDuration);
177  if (consumer != nullptr) {
178  if (position == b(0)) {
179  animatePushPacketStart(packet, gate, datarate, sendOptions);
180  consumer->pushPacketStart(packet, gate->getPathEndGate(), datarate);
181  }
182  else if (position == packet->getTotalLength()) {
183  animatePushPacketEnd(packet, gate, sendOptions);
184  consumer->pushPacketEnd(packet, gate->getPathEndGate());
185  }
186  else {
187  animatePushPacketProgress(packet, gate, datarate, position, extraProcessableLength, sendOptions);
188  consumer->pushPacketProgress(packet, gate->getPathEndGate(), datarate, position, extraProcessableLength);
189  }
190  }
191  else {
192  auto progressTag = packet->addTagIfAbsent<ProgressTag>();
193  progressTag->setDatarate(datarate);
194  progressTag->setPosition(position);
195  progressTag->setExtraProcessableLength(extraProcessableLength);
196  send(packet, sendOptions, gate);
197  }
198 }

Referenced by inet::InterpacketGapInserter::handleMessage(), inet::InterpacketGapInserter::pushOrSendOrSchedulePacketProgress(), inet::queueing::PacketMultiplexer::pushPacketProgress(), inet::queueing::PacketFlowBase::pushPacketProgress(), inet::queueing::PacketClassifierBase::pushPacketProgress(), inet::queueing::PacketFilterBase::pushPacketProgress(), inet::physicallayer::EthernetPhyHeaderInserter::pushPacketStart(), inet::physicallayer::EthernetFragmentPhyHeaderInserter::pushPacketStart(), and inet::InterpacketGapInserter::receivePacketProgress().

◆ pushOrSendPacketStart()

void inet::queueing::PacketProcessorBase::pushOrSendPacketStart ( Packet packet,
cGate *  gate,
IPassivePacketSink consumer,
bps  datarate,
int  transmissionId 
)
protectedvirtual
137 {
138  simtime_t duration = s(packet->getTotalLength() / datarate).get();
139  SendOptions sendOptions;
140  sendOptions.duration(duration);
141  sendOptions.updateTx(transmissionId, duration);
142  if (consumer != nullptr) {
143  animatePushPacketStart(packet, gate, datarate, sendOptions);
144  consumer->pushPacketStart(packet, findConnectedGate<IPacketProcessor>(gate), datarate);
145  }
146  else {
147  auto progressTag = packet->addTagIfAbsent<ProgressTag>();
148  progressTag->setDatarate(datarate);
149  progressTag->setPosition(b(0));
150  send(packet, sendOptions, gate);
151  }
152 }

Referenced by inet::EthernetCutthroughSource::handleMessage(), inet::PacketStreamer::pushPacket(), inet::PreemptableStreamer::pushPacket(), inet::EthernetCutthroughSink::pushPacketStart(), inet::queueing::PacketMultiplexer::pushPacketStart(), inet::queueing::PacketFlowBase::pushPacketStart(), inet::queueing::PacketClassifierBase::pushPacketStart(), inet::queueing::PacketFilterBase::pushPacketStart(), inet::NetworkInterface::pushPacketStart(), inet::StreamThroughReceiver::receivePacketStart(), inet::InterpacketGapInserter::receivePacketStart(), and inet::queueing::PreemptingServer::startStreaming().

◆ refreshDisplay()

◆ resolveDirective()

const char * inet::queueing::PacketProcessorBase::resolveDirective ( char  directive) const
overridevirtual

Implements inet::StringFormat::IDirectiveResolver.

Reimplemented in inet::NetworkInterface, inet::queueing::MultiTokenBucketMixin< PacketMeterBase >, inet::queueing::MultiTokenBucketMixin< PacketClassifierBase >, inet::queueing::TokenBucketMixin< PacketMeterBase >, inet::queueing::TokenBucketMixin< PacketClassifierBase >, inet::queueing::MarkovClassifier, inet::queueing::CreditBasedGate, inet::queueing::MarkovScheduler, inet::queueing::PacketFilterBase, inet::InterpacketGapInserter, inet::queueing::TokenBasedServer, inet::queueing::PacketBasedTokenGenerator, inet::queueing::PacketServer, inet::queueing::PacketQueueBase, inet::queueing::TokenGeneratorBase, and inet::queueing::PacketBufferBase.

408 {
409  static std::string result;
410  switch (directive) {
411  case 'p':
412  result = std::to_string(numProcessedPackets);
413  break;
414  case 'l':
415  result = processedTotalLength.str();
416  break;
417  default:
418  throw cRuntimeError("Unknown directive: %c", directive);
419  }
420  return result.c_str();
421 }

Referenced by inet::queueing::PacketBufferBase::resolveDirective(), inet::queueing::TokenGeneratorBase::resolveDirective(), inet::queueing::PacketQueueBase::resolveDirective(), inet::queueing::PacketServer::resolveDirective(), inet::queueing::PacketBasedTokenGenerator::resolveDirective(), inet::queueing::TokenBasedServer::resolveDirective(), inet::InterpacketGapInserter::resolveDirective(), inet::queueing::PacketFilterBase::resolveDirective(), inet::queueing::CreditBasedGate::resolveDirective(), inet::queueing::MarkovScheduler::resolveDirective(), and inet::queueing::MarkovClassifier::resolveDirective().

◆ supportsPacketPassing()

virtual bool inet::queueing::PacketProcessorBase::supportsPacketPassing ( cGate *  gate) const
inlineoverridevirtual

Returns true if the processor supports passing packets as a whole at the given gate.

A passed packet is handed over from one module to another by either the standard OMNeT++ handleMessage() mechanism, or by directly calling pushPacket() or pullPacket().

For example, packets are passed as a whole to and from a queue module.

Connecting incompatible gates raises an error during initialize. The gate parameter must be a valid gate of this module. The gate should be marked with @labels(pass) in the NED file.

Implements inet::queueing::IPacketProcessor.

Reimplemented in inet::NetworkInterface, inet::PreemptableStreamer, inet::PacketStreamer, and inet::PacketDestreamer.

80 { return true; }

◆ supportsPacketSending()

virtual bool inet::queueing::PacketProcessorBase::supportsPacketSending ( cGate *  gate) const
inlineoverridevirtual

Returns true if the processor supports sending packets at the given gate.

Sending a packet is an asynchronous operation that is initiated by the source module. A sent packet is always passed as a whole using standard handleMessage().

For output gates, true means that this module can send packets into the connected module. For input gates, true means that the connected module can send packets into this module. For example, a standard OMNeT++ module can send packets to an INET packet processor module, or an INET packet processor module can send packets to a standard OMNeT++ module.

Connecting incompatible gates raises an error during initialize. The gate parameter must be a valid gate of this module. The gate should be marked with @labels(send) in the NED file.

Implements inet::queueing::IPacketProcessor.

Reimplemented in inet::NetworkInterface.

79 { return true; }

◆ supportsPacketStreaming()

virtual bool inet::queueing::PacketProcessorBase::supportsPacketStreaming ( cGate *  gate) const
inlineoverridevirtual

Returns true if the processor supports streaming packets at the given gate.

A streamed packet is handed over from one module to another using several method calls and potentially exending to a non-zero simulation duration.

For example, packets are streamed to a preemptable signal transmitter module.

Connecting incompatible gates raises an error during initialize. The gate parameter must be a valid gate of this module. The gate should be marked with @labels(stream) in the NED file.

Implements inet::queueing::IPacketProcessor.

Reimplemented in inet::NetworkInterface, inet::queueing::PacketFilterBase, inet::PreemptableStreamer, inet::queueing::PacketClassifierBase, inet::queueing::PacketSchedulerBase, inet::PacketStreamer, inet::queueing::PacketFlowBase, inet::PacketDestreamer, inet::queueing::PacketMultiplexer, inet::StreamThroughTransmitter, inet::DestreamingReceiver, inet::StreamingTransmitter, and inet::StreamThroughReceiver.

81 { return false; }

◆ updateDisplayString()

void inet::queueing::PacketProcessorBase::updateDisplayString ( ) const
protectedvirtual

Reimplemented in inet::NetworkInterface, and inet::queueing::PacketGateBase.

400 {
401  if (getEnvir()->isGUI() && displayStringTextFormat != nullptr) {
403  getDisplayString().setTagArg("t", 0, text);
404  }
405 }

Referenced by inet::queueing::PacketBuffer::addPacket(), inet::queueing::TokenBasedServer::addTokens(), inet::queueing::PacketFilterBase::canPullPacket(), inet::queueing::ActivePacketSink::collectPacket(), inet::queueing::PassivePacketSink::consumePacket(), inet::DefragmenterBase::defragmentPacket(), inet::queueing::PreemptingServer::endStreaming(), inet::PacketStreamer::endStreaming(), inet::PreemptableStreamer::endStreaming(), inet::queueing::SignalBasedTokenGenerator::generateTokens(), inet::queueing::QueueBasedTokenGenerator::generateTokens(), inet::queueing::TokenBasedServer::handleCanPullPacketChanged(), inet::queueing::PacketSendToPush::handleMessage(), inet::queueing::PacketServer::handleMessage(), inet::queueing::TimeBasedTokenGenerator::handleMessage(), inet::InterpacketGapInserter::handleMessage(), inet::EthernetCutthroughSource::handleMessage(), inet::PacketReceiver::handleMessageWhenUp(), inet::PacketTransmitter::handleMessageWhenUp(), inet::StreamingTransmitter::handleMessageWhenUp(), inet::StreamThroughReceiver::handleMessageWhenUp(), inet::DestreamingReceiver::handleMessageWhenUp(), inet::StreamThroughTransmitter::handleMessageWhenUp(), inet::queueing::PacketQueue::handlePacketRemoved(), inet::queueing::TokenBasedServer::initialize(), inet::queueing::PacketBuffer::initialize(), inet::queueing::CompoundPacketQueueBase::initialize(), initialize(), inet::queueing::PacketQueue::initialize(), inet::StreamIdentifier::processPacket(), inet::StreamDecoder::processPacket(), inet::queueing::InstantServer::processPackets(), inet::queueing::TokenBasedServer::processPackets(), inet::queueing::ActivePacketSource::producePacket(), inet::queueing::PassivePacketSource::providePacket(), inet::queueing::PacketDemultiplexer::pullPacket(), inet::queueing::PassivePacketSource::pullPacket(), inet::queueing::MarkovClassifier::pullPacket(), inet::queueing::CompoundPacketQueueBase::pullPacket(), inet::PacketDestreamer::pullPacket(), inet::queueing::PacketQueue::pullPacket(), inet::queueing::PacketFlowBase::pullPacket(), inet::queueing::PacketSchedulerBase::pullPacket(), inet::queueing::PacketFilterBase::pullPacket(), inet::queueing::PacketFlowBase::pullPacketEnd(), inet::PacketStreamer::pullPacketEnd(), inet::queueing::PacketSchedulerBase::pullPacketEnd(), inet::PreemptableStreamer::pullPacketEnd(), inet::queueing::PacketFlowBase::pullPacketProgress(), inet::PacketStreamer::pullPacketProgress(), inet::queueing::PacketSchedulerBase::pullPacketProgress(), inet::PreemptableStreamer::pullPacketProgress(), inet::queueing::PacketFlowBase::pullPacketStart(), inet::PacketStreamer::pullPacketStart(), inet::queueing::PacketSchedulerBase::pullPacketStart(), inet::PreemptableStreamer::pullPacketStart(), inet::queueing::PacketPushToSend::pushPacket(), inet::queueing::PacketDuplicator::pushPacket(), inet::queueing::PacketDelayer::pushPacket(), inet::StreamSplitter::pushPacket(), inet::EthernetSocketPacketProcessor::pushPacket(), inet::DeaggregatorBase::pushPacket(), inet::PacketTransmitter::pushPacket(), inet::Ieee8021qSocketPacketProcessor::pushPacket(), inet::StreamingTransmitter::pushPacket(), inet::FragmenterBase::pushPacket(), inet::RelayInterfaceSelector::pushPacket(), inet::AggregatorBase::pushPacket(), inet::queueing::PacketBasedTokenGenerator::pushPacket(), inet::queueing::PacketCloner::pushPacket(), inet::queueing::MarkovScheduler::pushPacket(), inet::queueing::CompoundPacketQueueBase::pushPacket(), inet::InterpacketGapInserter::pushPacket(), inet::queueing::PacketMultiplexer::pushPacket(), inet::queueing::PacketFlowBase::pushPacket(), inet::queueing::PacketQueue::pushPacket(), inet::queueing::PacketClassifierBase::pushPacket(), inet::queueing::PacketFilterBase::pushPacket(), inet::EthernetCutthroughSink::pushPacketEnd(), inet::EthernetCutthroughSource::pushPacketEnd(), inet::StreamThroughTransmitter::pushPacketEnd(), inet::PacketDestreamer::pushPacketEnd(), inet::InterpacketGapInserter::pushPacketEnd(), inet::queueing::PacketFlowBase::pushPacketEnd(), inet::queueing::PacketMultiplexer::pushPacketEnd(), inet::queueing::PacketClassifierBase::pushPacketEnd(), inet::queueing::PacketFilterBase::pushPacketEnd(), inet::StreamThroughTransmitter::pushPacketProgress(), inet::queueing::PacketMultiplexer::pushPacketProgress(), inet::queueing::PacketFlowBase::pushPacketProgress(), inet::InterpacketGapInserter::pushPacketProgress(), inet::queueing::PacketClassifierBase::pushPacketProgress(), inet::queueing::PacketFilterBase::pushPacketProgress(), inet::physicallayer::EthernetPhyHeaderInserter::pushPacketStart(), inet::physicallayer::EthernetFragmentPhyHeaderInserter::pushPacketStart(), inet::EthernetCutthroughSink::pushPacketStart(), inet::EthernetCutthroughSource::pushPacketStart(), inet::StreamThroughTransmitter::pushPacketStart(), inet::queueing::PacketFlowBase::pushPacketStart(), inet::queueing::PacketMultiplexer::pushPacketStart(), inet::InterpacketGapInserter::pushPacketStart(), inet::queueing::PacketClassifierBase::pushPacketStart(), inet::queueing::PacketFilterBase::pushPacketStart(), inet::queueing::CompoundPacketQueueBase::receiveSignal(), refreshDisplay(), inet::queueing::PacketBuffer::removeAllPackets(), inet::queueing::CompoundPacketQueueBase::removeAllPackets(), inet::queueing::PacketQueue::removeAllPackets(), inet::queueing::PacketBuffer::removePacket(), inet::queueing::CompoundPacketQueueBase::removePacket(), inet::queueing::PacketQueue::removePacket(), inet::queueing::PreemptingServer::startStreaming(), and inet::queueing::PacketGateBase::updateDisplayString().

Member Data Documentation

◆ displayStringTextFormat

◆ numProcessedPackets

◆ processedTotalLength


The documentation for this class was generated from the following files:
inet::SelfDoc::keyVal
static std::string keyVal(const std::string &key, const std::string &value)
Definition: SelfDoc.h:34
inet::INITSTAGE_LAST
INET_API InitStage INITSTAGE_LAST
Operations that no other initializations can depend on, e.g.
inet::units::value::str
std::string str() const
Definition: Units.h:101
inet::queueing::PacketProcessorBase::animatePushPacketProgress
virtual void animatePushPacketProgress(Packet *packet, cGate *gate, bps datarate, b position, b extraProcessableLength, long transmissionId) const
Definition: PacketProcessorBase.cc:340
inet::queueing::PacketProcessorBase::animatePushPacketStart
virtual void animatePushPacketStart(Packet *packet, cGate *gate, bps datarate, long transmissionId) const
Definition: PacketProcessorBase.cc:320
inet::SelfDoc::generateSelfdoc
static bool generateSelfdoc
Definition: SelfDoc.h:20
inet::units::units::bps
compose< b, pow< s, -1 > > bps
Definition: Units.h:1169
inet::queueing::PacketProcessorBase::animatePacketEnd
virtual void animatePacketEnd(Packet *packet, cGate *gate, long transmissionId, Action action) const
Definition: PacketProcessorBase.cc:286
inet::queueing::PacketProcessorBase::animatePacketStart
virtual void animatePacketStart(Packet *packet, cGate *gate, bps datarate, long transmissionId, Action action) const
Definition: PacketProcessorBase.cc:271
inet::packetDroppedSignal
simsignal_t packetDroppedSignal
Definition: Simsignals.cc:85
inet::queueing::PacketProcessorBase::processedTotalLength
b processedTotalLength
Definition: PacketProcessorBase.h:31
inet::queueing::PacketProcessorBase::PULL
@ PULL
Definition: PacketProcessorBase.h:25
ctrl
removed ctrl
Definition: IUdp-gates.txt:7
inet::units::values::s
value< double, units::s > s
Definition: Units.h:1235
inet::SelfDoc::tagsToJson
static std::string tagsToJson(const char *key, cMessage *msg)
Definition: SelfDoc.cc:125
inet::queueing::PacketProcessorBase::PUSH
@ PUSH
Definition: PacketProcessorBase.h:24
inet::SelfDoc::gateInfo
static std::string gateInfo(cGate *gate)
Definition: SelfDoc.cc:148
inet::queueing::PacketProcessorBase::animate
virtual void animate(Packet *packet, cGate *gate, const SendOptions &sendOptions, Action action) const
Definition: PacketProcessorBase.cc:200
NaN
#define NaN
Definition: INETMath.h:91
inet::INITSTAGE_LOCAL
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
inet::queueing::PacketProcessorBase::numProcessedPackets
int numProcessedPackets
Definition: PacketProcessorBase.h:30
inet::units::values::b
value< int64_t, units::b > b
Definition: Units.h:1241
NUM_INIT_STAGES
#define NUM_INIT_STAGES
Definition: InitStageRegistry.h:73
inet::SelfDoc::kindToStr
static std::string kindToStr(int kind, cProperties *properties1, const char *propName1, cProperties *properties2, const char *propName2)
Definition: SelfDoc.cc:54
inet::queueing::PacketProcessorBase::updateDisplayString
virtual void updateDisplayString() const
Definition: PacketProcessorBase.cc:399
inet::queueing::PacketProcessorBase::animatePushPacket
virtual void animatePushPacket(Packet *packet, cGate *gate) const
Definition: PacketProcessorBase.cc:315
inet::queueing::PacketProcessorBase::checkPacketOperationSupport
virtual void checkPacketOperationSupport(cGate *gate) const
Definition: PacketProcessorBase.cc:40
inet::StringFormat::formatString
const char * formatString(IDirectiveResolver *resolver) const
Definition: StringFormat.cc:17
inet::globalSelfDoc
SelfDoc globalSelfDoc
Definition: SelfDoc.cc:19
inet::queueing::PacketProcessorBase::animatePacketProgress
virtual void animatePacketProgress(Packet *packet, cGate *gate, bps datarate, b position, b extraProcessableLength, long transmissionId, Action action) const
Definition: PacketProcessorBase.cc:298
inet::queueing::PacketProcessorBase::displayStringTextFormat
const char * displayStringTextFormat
Definition: PacketProcessorBase.h:29
inet::SelfDoc::insert
void insert(const std::string &text)
Definition: SelfDoc.h:25
inet::SelfDoc::val
static std::string val(const char *str)
Definition: SelfDoc.cc:79
inet::queueing::PacketProcessorBase::animatePacket
virtual void animatePacket(Packet *packet, cGate *gate, Action action) const
Definition: PacketProcessorBase.cc:263
inet::queueing::PacketProcessorBase::animatePushPacketEnd
virtual void animatePushPacketEnd(Packet *packet, cGate *gate, long transmissionId) const
Definition: PacketProcessorBase.cc:330