INET Framework for OMNeT++/OMNEST
inet::visualizer::RoutingTableCanvasVisualizer Class Reference

#include <RoutingTableCanvasVisualizer.h>

Inheritance diagram for inet::visualizer::RoutingTableCanvasVisualizer:
inet::visualizer::RoutingTableVisualizerBase inet::visualizer::VisualizerBase

Classes

class  RouteCanvasVisualization
 

Protected Member Functions

virtual void initialize (int stage) override
 
virtual void refreshDisplay () const override
 
virtual const RouteVisualizationcreateRouteVisualization (Ipv4Route *route, cModule *node, cModule *nextHop) const override
 
virtual void addRouteVisualization (const RouteVisualization *routeVisualization) override
 
virtual void removeRouteVisualization (const RouteVisualization *routeVisualization) override
 
virtual void refreshRouteVisualization (const RouteVisualization *routeVisualization) const override
 
- Protected Member Functions inherited from inet::visualizer::RoutingTableVisualizerBase
virtual void handleParameterChange (const char *name) override
 
virtual void preDelete (cComponent *root) override
 
virtual void subscribe ()
 
virtual void unsubscribe ()
 
virtual const RouteVisualizationgetRouteVisualization (Ipv4Route *route, int nodeModuleId, int nextHopModuleId)
 
virtual std::vector< Ipv4AddressgetDestinations ()
 
virtual void addRouteVisualizations (IIpv4RoutingTable *routingTable)
 
virtual void removeRouteVisualizations (IIpv4RoutingTable *routingTable)
 
virtual void removeAllRouteVisualizations ()
 
virtual void updateRouteVisualizations (IIpv4RoutingTable *routingTable)
 
virtual void updateAllRouteVisualizations ()
 
virtual std::string getRouteVisualizationText (const Ipv4Route *route) const
 
- 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

double zIndex = NaN
 
const CanvasProjectioncanvasProjection = nullptr
 
cGroupFigure * routeGroup = nullptr
 
- Protected Attributes inherited from inet::visualizer::RoutingTableVisualizerBase
bool displayRoutingTables = false
 
bool displayRoutesIndividually = false
 
bool displayLabels = false
 
NetworkNodeFilter destinationFilter
 
NetworkNodeFilter nodeFilter
 
cFigure::Color lineColor
 
cFigure::LineStyle lineStyle
 
double lineShift = NaN
 
const char * lineShiftMode = nullptr
 
double lineWidth = NaN
 
double lineContactSpacing = NaN
 
const char * lineContactMode = nullptr
 
StringFormat labelFormat
 
cFigure::Font labelFont
 
cFigure::Color labelColor
 
LineManagerlineManager = nullptr
 
std::map< std::tuple< Ipv4Address, int, int >, const RouteVisualization * > routeVisualizations
 
- Protected Attributes inherited from inet::visualizer::VisualizerBase
cModule * visualizationTargetModule = nullptr
 
cModule * visualizationSubjectModule = nullptr
 
const char * tags = nullptr
 

Additional Inherited Members

- Public Member Functions inherited from inet::visualizer::RoutingTableVisualizerBase
virtual void receiveSignal (cComponent *source, simsignal_t signal, cObject *obj, cObject *details) override
 

Member Function Documentation

◆ addRouteVisualization()

void inet::visualizer::RoutingTableCanvasVisualizer::addRouteVisualization ( const RouteVisualization routeVisualization)
overrideprotectedvirtual

Reimplemented from inet::visualizer::RoutingTableVisualizerBase.

81 {
83  auto routeCanvasVisualization = static_cast<const RouteCanvasVisualization *>(routeVisualization);
84  lineManager->addModuleLine(routeVisualization);
85  routeGroup->addFigure(routeCanvasVisualization->figure);
86 }

◆ createRouteVisualization()

const RoutingTableVisualizerBase::RouteVisualization * inet::visualizer::RoutingTableCanvasVisualizer::createRouteVisualization ( Ipv4Route route,
cModule *  node,
cModule *  nextHop 
) const
overrideprotectedvirtual

Implements inet::visualizer::RoutingTableVisualizerBase.

60 {
61  auto figure = new LabeledLineFigure("routing entry");
62  figure->setTags((std::string("route ") + tags).c_str());
63  figure->setTooltip("This arrow represents a route in a routing table");
64  figure->setAssociatedObject(route);
65  auto lineFigure = figure->getLineFigure();
66  lineFigure->setEndArrowhead(cFigure::ARROW_TRIANGLE);
67  lineFigure->setLineWidth(lineWidth);
68  lineFigure->setLineColor(lineColor);
69  lineFigure->setLineStyle(lineStyle);
70  auto labelFigure = figure->getLabelFigure();
71  labelFigure->setFont(labelFont);
72  labelFigure->setColor(labelColor);
73  labelFigure->setVisible(displayLabels);
74  auto routeVisualization = new RouteCanvasVisualization(figure, route, node->getId(), nextHop->getId());
75  routeVisualization->shiftPriority = 0.5;
76  refreshRouteVisualization(routeVisualization);
77  return routeVisualization;
78 }

◆ initialize()

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

Reimplemented from inet::visualizer::RoutingTableVisualizerBase.

28 {
30  if (!hasGUI()) return;
31  if (stage == INITSTAGE_LOCAL) {
32  zIndex = par("zIndex");
33  auto canvas = visualizationTargetModule->getCanvas();
36  routeGroup = new cGroupFigure("routing tables");
37  routeGroup->setZIndex(zIndex);
38  canvas->addFigure(routeGroup);
39  }
40 }

◆ refreshDisplay()

void inet::visualizer::RoutingTableCanvasVisualizer::refreshDisplay ( ) const
overrideprotectedvirtual
43 {
44  auto simulation = getSimulation();
45  for (auto it : routeVisualizations) {
46  auto routeVisualization = it.second;
47  auto routeCanvasVisualization = static_cast<const RouteCanvasVisualization *>(routeVisualization);
48  auto figure = routeCanvasVisualization->figure;
49  auto sourceModule = simulation->getModule(routeVisualization->sourceModuleId);
50  auto destinationModule = simulation->getModule(routeVisualization->destinationModuleId);
51  auto sourcePosition = getContactPosition(sourceModule, getPosition(destinationModule), lineContactMode, lineContactSpacing);
52  auto destinationPosition = getContactPosition(destinationModule, getPosition(sourceModule), lineContactMode, lineContactSpacing);
53  auto shift = lineManager->getLineShift(routeVisualization->sourceModuleId, routeVisualization->destinationModuleId, sourcePosition, destinationPosition, lineShiftMode, routeVisualization->shiftOffset) * lineShift;
54  figure->setStart(canvasProjection->computeCanvasPoint(sourcePosition + shift));
55  figure->setEnd(canvasProjection->computeCanvasPoint(destinationPosition + shift));
56  }
57 }

◆ refreshRouteVisualization()

void inet::visualizer::RoutingTableCanvasVisualizer::refreshRouteVisualization ( const RouteVisualization routeVisualization) const
overrideprotectedvirtual

Implements inet::visualizer::RoutingTableVisualizerBase.

97 {
98  auto routeCanvasVisualization = static_cast<const RouteCanvasVisualization *>(routeVisualization);
99  auto labelFigure = routeCanvasVisualization->figure->getLabelFigure();
100  auto text = displayRoutesIndividually ? getRouteVisualizationText(routeCanvasVisualization->route) : std::to_string(routeVisualization->numRoutes) + (routeVisualization->numRoutes > 1 ? " routes" : " route");
101  labelFigure->setText(text.c_str());
102 }

Referenced by createRouteVisualization().

◆ removeRouteVisualization()

void inet::visualizer::RoutingTableCanvasVisualizer::removeRouteVisualization ( const RouteVisualization routeVisualization)
overrideprotectedvirtual

Reimplemented from inet::visualizer::RoutingTableVisualizerBase.

89 {
91  auto routeCanvasVisualization = static_cast<const RouteCanvasVisualization *>(routeVisualization);
92  lineManager->removeModuleLine(routeVisualization);
93  routeGroup->removeFigure(routeCanvasVisualization->figure);
94 }

Member Data Documentation

◆ canvasProjection

const CanvasProjection* inet::visualizer::RoutingTableCanvasVisualizer::canvasProjection = nullptr
protected

Referenced by initialize(), and refreshDisplay().

◆ routeGroup

cGroupFigure* inet::visualizer::RoutingTableCanvasVisualizer::routeGroup = nullptr
protected

◆ zIndex

double inet::visualizer::RoutingTableCanvasVisualizer::zIndex = NaN
protected

Referenced by initialize().


The documentation for this class was generated from the following files:
inet::visualizer::RoutingTableVisualizerBase::labelFont
cFigure::Font labelFont
Definition: RoutingTableVisualizerBase.h:63
inet::visualizer::RoutingTableVisualizerBase::lineWidth
double lineWidth
Definition: RoutingTableVisualizerBase.h:59
inet::CanvasProjection::getCanvasProjection
static CanvasProjection * getCanvasProjection(const cCanvas *canvas)
Definition: CanvasProjection.cc:53
inet::visualizer::RoutingTableVisualizerBase::displayLabels
bool displayLabels
Definition: RoutingTableVisualizerBase.h:52
inet::visualizer::RoutingTableVisualizerBase::lineContactSpacing
double lineContactSpacing
Definition: RoutingTableVisualizerBase.h:60
inet::visualizer::RoutingTableVisualizerBase::lineShiftMode
const char * lineShiftMode
Definition: RoutingTableVisualizerBase.h:58
inet::visualizer::RoutingTableVisualizerBase::lineContactMode
const char * lineContactMode
Definition: RoutingTableVisualizerBase.h:61
inet::visualizer::RoutingTableVisualizerBase::getRouteVisualizationText
virtual std::string getRouteVisualizationText(const Ipv4Route *route) const
Definition: RoutingTableVisualizerBase.cc:256
inet::visualizer::RoutingTableVisualizerBase::lineShift
double lineShift
Definition: RoutingTableVisualizerBase.h:57
inet::visualizer::VisualizerBase::visualizationTargetModule
cModule * visualizationTargetModule
Definition: VisualizerBase.h:25
inet::visualizer::RoutingTableVisualizerBase::removeRouteVisualization
virtual void removeRouteVisualization(const RouteVisualization *routeVisualization)
Definition: RoutingTableVisualizerBase.cc:160
inet::visualizer::RoutingTableVisualizerBase::routeVisualizations
std::map< std::tuple< Ipv4Address, int, int >, const RouteVisualization * > routeVisualizations
Definition: RoutingTableVisualizerBase.h:70
inet::visualizer::RoutingTableVisualizerBase::lineManager
LineManager * lineManager
Definition: RoutingTableVisualizerBase.h:67
inet::visualizer::LineManager::getLineShift
Coord getLineShift(int sourceModuleId, int destinationModuleId, const Coord &sourcePosition, const Coord &destinationPosition, const char *shiftMode, int shiftOffset)
Definition: LineManager.cc:105
inet::visualizer::LineManager::getCanvasLineManager
static LineManager * getCanvasLineManager(const cCanvas *canvas)
Definition: LineManager.cc:19
inet::visualizer::VisualizerBase::getContactPosition
virtual Coord getContactPosition(const cModule *networkNode, const Coord &fromPosition, const char *contactMode, double contactSpacing) const
Definition: VisualizerBase.cc:51
inet::visualizer::VisualizerBase::getPosition
virtual Coord getPosition(const cModule *networkNode) const
Definition: VisualizerBase.cc:39
inet::CanvasProjection::computeCanvasPoint
cFigure::Point computeCanvasPoint(const Coord &point) const
Definition: CanvasProjection.cc:34
inet::visualizer::RoutingTableCanvasVisualizer::refreshRouteVisualization
virtual void refreshRouteVisualization(const RouteVisualization *routeVisualization) const override
Definition: RoutingTableCanvasVisualizer.cc:96
inet::INITSTAGE_LOCAL
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
inet::visualizer::RoutingTableCanvasVisualizer::canvasProjection
const CanvasProjection * canvasProjection
Definition: RoutingTableCanvasVisualizer.h:33
inet::visualizer::RoutingTableVisualizerBase::initialize
virtual void initialize(int stage) override
Definition: RoutingTableVisualizerBase.cc:66
inet::visualizer::RoutingTableVisualizerBase::lineColor
cFigure::Color lineColor
Definition: RoutingTableVisualizerBase.h:55
inet::visualizer::RoutingTableVisualizerBase::displayRoutesIndividually
bool displayRoutesIndividually
Definition: RoutingTableVisualizerBase.h:51
inet::visualizer::RoutingTableCanvasVisualizer::routeGroup
cGroupFigure * routeGroup
Definition: RoutingTableCanvasVisualizer.h:34
inet::visualizer::VisualizerBase::tags
const char * tags
Definition: VisualizerBase.h:27
inet::visualizer::RoutingTableVisualizerBase::lineStyle
cFigure::LineStyle lineStyle
Definition: RoutingTableVisualizerBase.h:56
inet::visualizer::RoutingTableVisualizerBase::labelColor
cFigure::Color labelColor
Definition: RoutingTableVisualizerBase.h:64
inet::visualizer::RoutingTableVisualizerBase::addRouteVisualization
virtual void addRouteVisualization(const RouteVisualization *routeVisualization)
Definition: RoutingTableVisualizerBase.cc:151
inet::visualizer::LineManager::removeModuleLine
void removeModuleLine(const ModuleLine *moduleLine)
Definition: LineManager.cc:75
inet::visualizer::RoutingTableCanvasVisualizer::zIndex
double zIndex
Definition: RoutingTableCanvasVisualizer.h:32
inet::visualizer::LineManager::addModuleLine
void addModuleLine(const ModuleLine *moduleLine)
Definition: LineManager.cc:67