INET Framework for OMNeT++/OMNEST
inet::visualizer::PacketDropVisualizerBase Class Referenceabstract

#include <PacketDropVisualizerBase.h>

Inheritance diagram for inet::visualizer::PacketDropVisualizerBase:
inet::visualizer::VisualizerBase inet::visualizer::PacketDropCanvasVisualizer inet::visualizer::PacketDropOsgVisualizer

Classes

class  DetailsFilter
 
class  DirectiveResolver
 
class  PacketDropVisualization
 

Parameters

bool displayPacketDrops = false
 
NetworkNodeFilter nodeFilter
 
InterfaceFilter interfaceFilter
 
PacketFilter packetFilter
 
DetailsFilter detailsFilter
 
const char * icon = nullptr
 
ColorSet iconTintColorSet
 
double iconTintAmount = NaN
 
StringFormat labelFormat
 
cFigure::Font labelFont
 
cFigure::Color labelColor
 
const char * fadeOutMode = nullptr
 
double fadeOutTime = NaN
 
double fadeOutAnimationSpeed = NaN
 
std::vector< const PacketDropVisualization * > packetDropVisualizations
 
virtual void initialize (int stage) override
 
virtual void handleParameterChange (const char *name) override
 
virtual void refreshDisplay () const override
 
virtual void preDelete (cComponent *root) override
 
virtual void subscribe ()
 
virtual void unsubscribe ()
 
virtual const PacketDropVisualizationcreatePacketDropVisualization (PacketDrop *packetDrop) const =0
 
virtual void addPacketDropVisualization (const PacketDropVisualization *packetDropVisualization)
 
virtual void removePacketDropVisualization (const PacketDropVisualization *packetDropVisualization)
 
virtual void removeAllPacketDropVisualizations ()
 
virtual void setAlpha (const PacketDropVisualization *packetDropVisualization, double alpha) const =0
 
virtual std::string getPacketDropVisualizationText (const PacketDrop *packetDrop) const
 
virtual void receiveSignal (cComponent *source, simsignal_t signal, cObject *object, cObject *details) override
 

Additional Inherited Members

- Protected Member Functions inherited from inet::visualizer::VisualizerBase
virtual int numInitStages () const override
 
virtual Coord getPosition (const cModule *networkNode) const
 
virtual Coord getContactPosition (const cModule *networkNode, const Coord &fromPosition, const char *contactMode, double contactSpacing) const
 
virtual Quaternion getOrientation (const cModule *networkNode) const
 
virtual void mapChunks (const Ptr< const Chunk > &chunk, const std::function< void(const Ptr< const Chunk > &, int)> &thunk) const
 
- Protected Attributes inherited from inet::visualizer::VisualizerBase
cModule * visualizationTargetModule = nullptr
 
cModule * visualizationSubjectModule = nullptr
 
const char * tags = nullptr
 

Member Function Documentation

◆ addPacketDropVisualization()

void inet::visualizer::PacketDropVisualizerBase::addPacketDropVisualization ( const PacketDropVisualization packetDropVisualization)
protectedvirtual

◆ createPacketDropVisualization()

virtual const PacketDropVisualization* inet::visualizer::PacketDropVisualizerBase::createPacketDropVisualization ( PacketDrop packetDrop) const
protectedpure virtual

◆ getPacketDropVisualizationText()

std::string inet::visualizer::PacketDropVisualizerBase::getPacketDropVisualizationText ( const PacketDrop packetDrop) const
protectedvirtual
226 {
227  DirectiveResolver directiveResolver(packetDrop);
228  return labelFormat.formatString(&directiveResolver);
229 }

Referenced by inet::visualizer::PacketDropCanvasVisualizer::createPacketDropVisualization().

◆ handleParameterChange()

void inet::visualizer::PacketDropVisualizerBase::handleParameterChange ( const char *  name)
overrideprotectedvirtual
128 {
129  if (!hasGUI()) return;
130  if (name != nullptr) {
131  if (!strcmp(name, "nodeFilter"))
132  nodeFilter.setPattern(par("nodeFilter"));
133  else if (!strcmp(name, "interfaceFilter"))
134  interfaceFilter.setPattern(par("interfaceFilter"));
135  else if (!strcmp(name, "packetFilter"))
136  packetFilter.setExpression(par("packetFilter").objectValue());
137  else if (!strcmp(name, "detailsFilter"))
138  detailsFilter.setPattern(par("detailsFilter"));
139  else if (!strcmp(name, "labelFormat"))
140  labelFormat.parseFormat(par("labelFormat"));
142  }
143 }

◆ initialize()

void inet::visualizer::PacketDropVisualizerBase::initialize ( int  stage)
overrideprotectedvirtual

Reimplemented from inet::visualizer::VisualizerBase.

Reimplemented in inet::visualizer::PacketDropCanvasVisualizer.

104 {
106  if (!hasGUI()) return;
107  if (stage == INITSTAGE_LOCAL) {
108  displayPacketDrops = par("displayPacketDrops");
109  nodeFilter.setPattern(par("nodeFilter"));
110  interfaceFilter.setPattern(par("interfaceFilter"));
111  packetFilter.setExpression(par("packetFilter").objectValue());
112  detailsFilter.setPattern(par("detailsFilter"));
113  icon = par("icon");
114  iconTintAmount = par("iconTintAmount");
115  iconTintColorSet.parseColors(par("iconTintColor"));
116  labelFormat.parseFormat(par("labelFormat"));
117  labelFont = cFigure::parseFont(par("labelFont"));
118  labelColor = cFigure::Color(par("labelColor"));
119  fadeOutMode = par("fadeOutMode");
120  fadeOutTime = par("fadeOutTime");
121  fadeOutAnimationSpeed = par("fadeOutAnimationSpeed");
122  if (displayPacketDrops)
123  subscribe();
124  }
125 }

Referenced by inet::visualizer::PacketDropCanvasVisualizer::initialize().

◆ preDelete()

void inet::visualizer::PacketDropVisualizerBase::preDelete ( cComponent *  root)
overrideprotectedvirtual
96 {
97  if (displayPacketDrops) {
98  unsubscribe();
100  }
101 }

◆ receiveSignal()

void inet::visualizer::PacketDropVisualizerBase::receiveSignal ( cComponent *  source,
simsignal_t  signal,
cObject *  object,
cObject *  details 
)
overridevirtual
185 {
186  Enter_Method("%s", cComponent::getSignalName(signal));
187 
188  if (signal == packetDroppedSignal) {
189  auto module = check_and_cast<cModule *>(source);
190  auto packet = check_and_cast<cPacket *>(object);
191  auto packetDropDetails = check_and_cast<PacketDropDetails *>(details);
192  auto networkNode = findContainingNode(module);
193  auto networkInterface = findContainingNicModule(module);
194  if ((networkNode == nullptr || nodeFilter.matches(networkNode)) && (networkInterface == nullptr || interfaceFilter.matches(networkInterface)) &&
195  packetFilter.matches(packet) && detailsFilter.matches(packetDropDetails))
196  {
197  auto position = networkNode != nullptr ? getPosition(networkNode) : Coord::NIL;
198  auto packetDrop = new PacketDrop(packetDropDetails->getReason(), packet->dup(), module->getId(), position);
199  auto packetDropVisualization = createPacketDropVisualization(packetDrop);
200  addPacketDropVisualization(packetDropVisualization);
201  }
202  }
203  else
204  throw cRuntimeError("Unknown signal");
205 }

◆ refreshDisplay()

void inet::visualizer::PacketDropVisualizerBase::refreshDisplay ( ) const
overrideprotectedvirtual

Reimplemented in inet::visualizer::PacketDropCanvasVisualizer, and inet::visualizer::PacketDropOsgVisualizer.

146 {
147  AnimationPosition currentAnimationPosition;
148  std::vector<const PacketDropVisualization *> removedPacketDropVisualizations;
149  for (auto packetDropVisualization : packetDropVisualizations) {
150  double delta;
151  if (!strcmp(fadeOutMode, "simulationTime"))
152  delta = (currentAnimationPosition.getSimulationTime() - packetDropVisualization->packetDropAnimationPosition.getSimulationTime()).dbl();
153  else if (!strcmp(fadeOutMode, "animationTime"))
154  delta = currentAnimationPosition.getAnimationTime() - packetDropVisualization->packetDropAnimationPosition.getAnimationTime();
155  else if (!strcmp(fadeOutMode, "realTime"))
156  delta = currentAnimationPosition.getRealTime() - packetDropVisualization->packetDropAnimationPosition.getRealTime();
157  else
158  throw cRuntimeError("Unknown fadeOutMode: %s", fadeOutMode);
159  if (delta > fadeOutTime)
160  removedPacketDropVisualizations.push_back(packetDropVisualization);
161  else
162  setAlpha(packetDropVisualization, 1 - delta / fadeOutTime);
163  }
164  for (auto packetDropVisualization : removedPacketDropVisualizations) {
165  const_cast<PacketDropVisualizerBase *>(this)->removePacketDropVisualization(packetDropVisualization);
166  delete packetDropVisualization;
167  }
168 }

Referenced by inet::visualizer::PacketDropOsgVisualizer::refreshDisplay(), and inet::visualizer::PacketDropCanvasVisualizer::refreshDisplay().

◆ removeAllPacketDropVisualizations()

void inet::visualizer::PacketDropVisualizerBase::removeAllPacketDropVisualizations ( )
protectedvirtual
218 {
219  for (auto packetDropVisualization : std::vector<const PacketDropVisualization *>(packetDropVisualizations)) {
220  removePacketDropVisualization(packetDropVisualization);
221  delete packetDropVisualization;
222  }
223 }

Referenced by handleParameterChange(), and preDelete().

◆ removePacketDropVisualization()

◆ setAlpha()

virtual void inet::visualizer::PacketDropVisualizerBase::setAlpha ( const PacketDropVisualization packetDropVisualization,
double  alpha 
) const
protectedpure virtual

◆ subscribe()

void inet::visualizer::PacketDropVisualizerBase::subscribe ( )
protectedvirtual
171 {
173 
174 }

Referenced by initialize().

◆ unsubscribe()

void inet::visualizer::PacketDropVisualizerBase::unsubscribe ( )
protectedvirtual
177 {
178  // NOTE: lookup the module again because it may have been deleted first
179  auto visualizationSubjectModule = findModuleFromPar<cModule>(par("visualizationSubjectModule"), this);
180  if (visualizationSubjectModule != nullptr)
182 }

Referenced by preDelete().

Member Data Documentation

◆ detailsFilter

DetailsFilter inet::visualizer::PacketDropVisualizerBase::detailsFilter
protected

◆ displayPacketDrops

bool inet::visualizer::PacketDropVisualizerBase::displayPacketDrops = false
protected

Referenced by initialize(), and preDelete().

◆ fadeOutAnimationSpeed

double inet::visualizer::PacketDropVisualizerBase::fadeOutAnimationSpeed = NaN
protected

◆ fadeOutMode

const char* inet::visualizer::PacketDropVisualizerBase::fadeOutMode = nullptr
protected

Referenced by initialize(), and refreshDisplay().

◆ fadeOutTime

double inet::visualizer::PacketDropVisualizerBase::fadeOutTime = NaN
protected

Referenced by initialize(), and refreshDisplay().

◆ icon

const char* inet::visualizer::PacketDropVisualizerBase::icon = nullptr
protected

◆ iconTintAmount

double inet::visualizer::PacketDropVisualizerBase::iconTintAmount = NaN
protected

◆ iconTintColorSet

◆ interfaceFilter

InterfaceFilter inet::visualizer::PacketDropVisualizerBase::interfaceFilter
protected

◆ labelColor

cFigure::Color inet::visualizer::PacketDropVisualizerBase::labelColor
protected

◆ labelFont

cFigure::Font inet::visualizer::PacketDropVisualizerBase::labelFont
protected

◆ labelFormat

StringFormat inet::visualizer::PacketDropVisualizerBase::labelFormat
protected

◆ nodeFilter

NetworkNodeFilter inet::visualizer::PacketDropVisualizerBase::nodeFilter
protected

◆ packetDropVisualizations

◆ packetFilter

PacketFilter inet::visualizer::PacketDropVisualizerBase::packetFilter
protected

The documentation for this class was generated from the following files:
inet::visualizer::PacketDropVisualizerBase::setAlpha
virtual void setAlpha(const PacketDropVisualization *packetDropVisualization, double alpha) const =0
inet::findContainingNode
cModule * findContainingNode(const cModule *from)
Find the node containing the given module.
Definition: ModuleAccess.cc:31
inet::visualizer::PacketDropVisualizerBase::unsubscribe
virtual void unsubscribe()
Definition: PacketDropVisualizerBase.cc:176
inet::StringFormat::parseFormat
void parseFormat(const char *format)
Definition: StringFormat.cc:12
inet::findContainingNicModule
NetworkInterface * findContainingNicModule(const cModule *from)
Find the nic module (inside the networkNode) containing the given module.
Definition: NetworkInterface.cc:679
inet::visualizer::ColorSet::parseColors
void parseColors(const char *colorNames)
Definition: ColorSet.cc:14
inet::visualizer::InterfaceFilter::matches
bool matches(const NetworkInterface *networkInterface) const
Definition: InterfaceFilter.cc:19
inet::visualizer::PacketDropVisualizerBase::fadeOutAnimationSpeed
double fadeOutAnimationSpeed
Definition: PacketDropVisualizerBase.h:92
inet::remove
void remove(std::vector< T > &v, const Tk &a)
Definition: stlutils.h:107
inet::visualizer::NetworkNodeFilter::matches
bool matches(const cModule *module) const
Definition: NetworkNodeFilter.cc:19
inet::visualizer::PacketDropVisualizerBase::fadeOutMode
const char * fadeOutMode
Definition: PacketDropVisualizerBase.h:90
inet::visualizer::PacketDropVisualizerBase::subscribe
virtual void subscribe()
Definition: PacketDropVisualizerBase.cc:170
inet::visualizer::PacketDropVisualizerBase::labelColor
cFigure::Color labelColor
Definition: PacketDropVisualizerBase.h:89
inet::packetDroppedSignal
simsignal_t packetDroppedSignal
Definition: Simsignals.cc:85
inet::visualizer::PacketDropVisualizerBase::iconTintColorSet
ColorSet iconTintColorSet
Definition: PacketDropVisualizerBase.h:85
inet::visualizer::PacketDropVisualizerBase::nodeFilter
NetworkNodeFilter nodeFilter
Definition: PacketDropVisualizerBase.h:80
inet::visualizer::PacketDropVisualizerBase::DetailsFilter::matches
bool matches(const PacketDropDetails *details) const
Definition: PacketDropVisualizerBase.cc:89
inet::visualizer::PacketDropVisualizerBase::icon
const char * icon
Definition: PacketDropVisualizerBase.h:84
inet::visualizer::PacketDropVisualizerBase::displayPacketDrops
bool displayPacketDrops
Definition: PacketDropVisualizerBase.h:79
inet::visualizer::PacketDropVisualizerBase::addPacketDropVisualization
virtual void addPacketDropVisualization(const PacketDropVisualization *packetDropVisualization)
Definition: PacketDropVisualizerBase.cc:207
inet::visualizer::NetworkNodeFilter::setPattern
void setPattern(const char *pattern)
Definition: NetworkNodeFilter.cc:14
inet::visualizer::PacketDropVisualizerBase::fadeOutTime
double fadeOutTime
Definition: PacketDropVisualizerBase.h:91
inet::visualizer::VisualizerBase::getPosition
virtual Coord getPosition(const cModule *networkNode) const
Definition: VisualizerBase.cc:39
inet::visualizer::InterfaceFilter::setPattern
void setPattern(const char *pattern)
Definition: InterfaceFilter.cc:14
inet::INITSTAGE_LOCAL
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
inet::visualizer::PacketDropVisualizerBase::iconTintAmount
double iconTintAmount
Definition: PacketDropVisualizerBase.h:86
inet::visualizer::PacketDropVisualizerBase::removePacketDropVisualization
virtual void removePacketDropVisualization(const PacketDropVisualization *packetDropVisualization)
Definition: PacketDropVisualizerBase.cc:212
inet::visualizer::PacketDropVisualizerBase::interfaceFilter
InterfaceFilter interfaceFilter
Definition: PacketDropVisualizerBase.h:81
inet::visualizer::PacketDropVisualizerBase::packetDropVisualizations
std::vector< const PacketDropVisualization * > packetDropVisualizations
Definition: PacketDropVisualizerBase.h:95
inet::visualizer::PacketDropVisualizerBase::packetFilter
PacketFilter packetFilter
Definition: PacketDropVisualizerBase.h:82
inet::visualizer::PacketDropVisualizerBase::createPacketDropVisualization
virtual const PacketDropVisualization * createPacketDropVisualization(PacketDrop *packetDrop) const =0
inet::StringFormat::formatString
const char * formatString(IDirectiveResolver *resolver) const
Definition: StringFormat.cc:17
inet::visualizer::PacketDropVisualizerBase::DetailsFilter::setPattern
void setPattern(const char *pattern)
Definition: PacketDropVisualizerBase.cc:84
inet::visualizer::PacketDropVisualizerBase::labelFont
cFigure::Font labelFont
Definition: PacketDropVisualizerBase.h:88
Enter_Method
#define Enter_Method(...)
Definition: SelfDoc.h:71
inet::visualizer::PacketDropVisualizerBase::detailsFilter
DetailsFilter detailsFilter
Definition: PacketDropVisualizerBase.h:83
inet::DiffservUtil::Color
Color
Definition: DiffservUtil.h:17
inet::visualizer::VisualizerBase::visualizationSubjectModule
cModule * visualizationSubjectModule
Definition: VisualizerBase.h:26
inet::visualizer::PacketDropVisualizerBase::removeAllPacketDropVisualizations
virtual void removeAllPacketDropVisualizations()
Definition: PacketDropVisualizerBase.cc:217
inet::visualizer::VisualizerBase::initialize
virtual void initialize(int stage) override
Definition: VisualizerBase.cc:23
inet::visualizer::PacketDropVisualizerBase::labelFormat
StringFormat labelFormat
Definition: PacketDropVisualizerBase.h:87