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

#include <InterfaceTableVisualizerBase.h>

Inheritance diagram for inet::visualizer::InterfaceTableVisualizerBase:
inet::visualizer::VisualizerBase inet::visualizer::InterfaceTableCanvasVisualizer inet::visualizer::InterfaceTableOsgVisualizer

Classes

class  DirectiveResolver
 
class  InterfaceVisualization
 

Parameters

bool displayInterfaceTables = false
 
bool displayWiredInterfacesAtConnections = false
 
bool displayBackground = false
 
NetworkNodeFilter nodeFilter
 
InterfaceFilter interfaceFilter
 
StringFormat format
 
Placement placementHint
 
double placementPriority
 
cFigure::Font font
 
cFigure::Color textColor
 
cFigure::Color backgroundColor
 
double opacity = NaN
 
std::map< std::pair< int, int >, const InterfaceVisualization * > interfaceVisualizations
 
virtual void initialize (int stage) override
 
virtual void handleParameterChange (const char *name) override
 
virtual void preDelete (cComponent *root) override
 
virtual void subscribe ()
 
virtual void unsubscribe ()
 
virtual cModule * getNetworkNode (const InterfaceVisualization *interfaceVisualization)
 
virtual cGate * getOutputGate (cModule *networkNode, NetworkInterface *networkInterface)
 
virtual cGate * getOutputGate (const InterfaceVisualization *interfaceVisualization)
 
virtual InterfaceVisualizationcreateInterfaceVisualization (cModule *networkNode, NetworkInterface *networkInterface)=0
 
virtual const InterfaceVisualizationgetInterfaceVisualization (cModule *networkNode, NetworkInterface *networkInterface)
 
virtual void addInterfaceVisualization (const InterfaceVisualization *interfaceVisualization)
 
virtual void addAllInterfaceVisualizations ()
 
virtual void removeInterfaceVisualization (const InterfaceVisualization *interfaceVisualization)
 
virtual void removeAllInterfaceVisualizations ()
 
virtual void updateAllInterfaceVisualizations ()
 
virtual std::string getVisualizationText (const NetworkInterface *networkInterface)
 
virtual void refreshInterfaceVisualization (const InterfaceVisualization *interfaceVisualization, const NetworkInterface *networkInterface)=0
 
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

◆ addAllInterfaceVisualizations()

void inet::visualizer::InterfaceTableVisualizerBase::addAllInterfaceVisualizations ( )
protectedvirtual
221 {
222  for (cModule::SubmoduleIterator it(visualizationSubjectModule); !it.end(); it++) {
223  auto networkNode = *it;
224  if (isNetworkNode(networkNode) && nodeFilter.matches(networkNode)) {
225  L3AddressResolver addressResolver;
226  auto interfaceTable = addressResolver.findInterfaceTableOf(networkNode);
227  if (interfaceTable != nullptr) {
228  for (int i = 0; i < interfaceTable->getNumInterfaces(); i++) {
229  auto networkInterface = interfaceTable->getInterface(i);
230  if (networkInterface != nullptr && interfaceFilter.matches(networkInterface)) {
231  auto interfaceVisualization = createInterfaceVisualization(networkNode, networkInterface);
232  addInterfaceVisualization(interfaceVisualization);
233  }
234  }
235  }
236  }
237  }
238 }

Referenced by updateAllInterfaceVisualizations().

◆ addInterfaceVisualization()

void inet::visualizer::InterfaceTableVisualizerBase::addInterfaceVisualization ( const InterfaceVisualization interfaceVisualization)
protectedvirtual

Reimplemented in inet::visualizer::InterfaceTableCanvasVisualizer, and inet::visualizer::InterfaceTableOsgVisualizer.

215 {
216  auto key = std::pair<int, int>(interfaceVisualization->networkNodeId, interfaceVisualization->interfaceId);
217  interfaceVisualizations[key] = interfaceVisualization;
218 }

Referenced by addAllInterfaceVisualizations(), inet::visualizer::InterfaceTableOsgVisualizer::addInterfaceVisualization(), inet::visualizer::InterfaceTableCanvasVisualizer::addInterfaceVisualization(), and receiveSignal().

◆ createInterfaceVisualization()

virtual InterfaceVisualization* inet::visualizer::InterfaceTableVisualizerBase::createInterfaceVisualization ( cModule *  networkNode,
NetworkInterface networkInterface 
)
protectedpure virtual

◆ getInterfaceVisualization()

const InterfaceTableVisualizerBase::InterfaceVisualization * inet::visualizer::InterfaceTableVisualizerBase::getInterfaceVisualization ( cModule *  networkNode,
NetworkInterface networkInterface 
)
protectedvirtual
208 {
209  auto key = std::pair<int, int>(networkNode->getId(), networkInterface->getInterfaceId());
210  auto it = interfaceVisualizations.find(key);
211  return it == interfaceVisualizations.end() ? nullptr : it->second;
212 }

Referenced by receiveSignal().

◆ getNetworkNode()

cModule * inet::visualizer::InterfaceTableVisualizerBase::getNetworkNode ( const InterfaceVisualization interfaceVisualization)
protectedvirtual
182 {
183  return getSimulation()->getModule(interfaceVisualization->networkNodeId);
184 }

Referenced by inet::visualizer::InterfaceTableCanvasVisualizer::getNetworkInterface(), and getOutputGate().

◆ getOutputGate() [1/2]

cGate * inet::visualizer::InterfaceTableVisualizerBase::getOutputGate ( cModule *  networkNode,
NetworkInterface networkInterface 
)
protectedvirtual
187 {
188  if (networkInterface->getNodeOutputGateId() == -1)
189  return nullptr;
190  cGate *outputGate = networkNode->gate(networkInterface->getNodeOutputGateId());
191  if (outputGate == nullptr || outputGate->getChannel() == nullptr)
192  return nullptr;
193  else
194  return outputGate;
195 }

Referenced by inet::visualizer::InterfaceTableCanvasVisualizer::addInterfaceVisualization(), inet::visualizer::InterfaceTableOsgVisualizer::createInterfaceVisualization(), inet::visualizer::InterfaceTableCanvasVisualizer::createInterfaceVisualization(), inet::visualizer::InterfaceTableCanvasVisualizer::refreshInterfaceVisualization(), and inet::visualizer::InterfaceTableCanvasVisualizer::removeInterfaceVisualization().

◆ getOutputGate() [2/2]

cGate * inet::visualizer::InterfaceTableVisualizerBase::getOutputGate ( const InterfaceVisualization interfaceVisualization)
protectedvirtual
198 {
199  if (interfaceVisualization->networkNodeGateId == -1)
200  return nullptr;
201  else {
202  auto networkNode = getNetworkNode(interfaceVisualization);
203  return networkNode != nullptr ? networkNode->gate(interfaceVisualization->networkNodeGateId) : nullptr;
204  }
205 }

◆ getVisualizationText()

◆ handleParameterChange()

void inet::visualizer::InterfaceTableVisualizerBase::handleParameterChange ( const char *  name)
overrideprotectedvirtual
146 {
147  if (!hasGUI()) return;
148  if (name != nullptr) {
149  if (!strcmp(name, "nodeFilter"))
150  nodeFilter.setPattern(par("nodeFilter"));
151  else if (!strcmp(name, "interfaceFilter"))
152  interfaceFilter.setPattern(par("interfaceFilter"));
153  else if (!strcmp(name, "format"))
154  format.parseFormat(par("format"));
156  }
157 }

◆ initialize()

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

Reimplemented from inet::visualizer::VisualizerBase.

Reimplemented in inet::visualizer::InterfaceTableCanvasVisualizer, and inet::visualizer::InterfaceTableOsgVisualizer.

124 {
126  if (!hasGUI()) return;
127  if (stage == INITSTAGE_LOCAL) {
128  displayInterfaceTables = par("displayInterfaceTables");
129  displayWiredInterfacesAtConnections = par("displayWiredInterfacesAtConnections");
130  displayBackground = par("displayBackground");
131  nodeFilter.setPattern(par("nodeFilter"));
132  interfaceFilter.setPattern(par("interfaceFilter"));
133  format.parseFormat(par("format"));
134  placementHint = parsePlacement(par("placementHint"));
135  placementPriority = par("placementPriority");
136  font = cFigure::parseFont(par("font"));
137  textColor = cFigure::parseColor(par("textColor"));
138  backgroundColor = cFigure::parseColor(par("backgroundColor"));
139  opacity = par("opacity");
141  subscribe();
142  }
143 }

Referenced by inet::visualizer::InterfaceTableOsgVisualizer::initialize(), and inet::visualizer::InterfaceTableCanvasVisualizer::initialize().

◆ preDelete()

void inet::visualizer::InterfaceTableVisualizerBase::preDelete ( cComponent *  root)
overrideprotectedvirtual
116 {
118  unsubscribe();
120  }
121 }

◆ receiveSignal()

void inet::visualizer::InterfaceTableVisualizerBase::receiveSignal ( cComponent *  source,
simsignal_t  signal,
cObject *  object,
cObject *  details 
)
overridevirtual
270 {
271  Enter_Method("%s", cComponent::getSignalName(signal));
272 
273  if (signal == interfaceCreatedSignal) {
274  auto networkNode = getContainingNode(static_cast<cModule *>(source));
275  if (nodeFilter.matches(networkNode)) {
276  auto networkInterface = static_cast<NetworkInterface *>(object);
277  if (networkInterface->getInterfaceId() != -1 && interfaceFilter.matches(networkInterface)) {
278  auto interfaceVisualization = createInterfaceVisualization(networkNode, networkInterface);
279  addInterfaceVisualization(interfaceVisualization);
280  }
281  }
282  }
283  else if (signal == interfaceDeletedSignal) {
284  auto networkNode = getContainingNode(static_cast<cModule *>(source));
285  if (nodeFilter.matches(networkNode)) {
286  auto networkInterface = static_cast<NetworkInterface *>(object);
287  if (networkInterface->getInterfaceId() != -1 && interfaceFilter.matches(networkInterface)) {
288  auto interfaceVisualization = getInterfaceVisualization(networkNode, networkInterface);
289  removeInterfaceVisualization(interfaceVisualization);
290  delete interfaceVisualization;
291  }
292  }
293  }
295  auto networkNode = getContainingNode(static_cast<cModule *>(source));
296  if (object != nullptr && nodeFilter.matches(networkNode)) {
297  auto networkInterfaceDetails = static_cast<NetworkInterfaceChangeDetails *>(object);
298  auto networkInterface = networkInterfaceDetails->getNetworkInterface();
299  auto fieldId = networkInterfaceDetails->getFieldId();
300  if ((signal == interfaceConfigChangedSignal && fieldId == NetworkInterface::F_IPV4_DATA)
301 #ifdef INET_WITH_IPv4
303 #endif // INET_WITH_IPv4
304  || (signal == interfaceStateChangedSignal && (fieldId == NetworkInterface::F_STATE || fieldId == NetworkInterface::F_CARRIER)))
305  {
306  if (networkInterface->getInterfaceId() != -1 && interfaceFilter.matches(networkInterface)) {
307  auto interfaceVisualization = getInterfaceVisualization(networkNode, networkInterface);
308  if (interfaceVisualization == nullptr) {
309  interfaceVisualization = createInterfaceVisualization(networkNode, networkInterface);
310  addInterfaceVisualization(interfaceVisualization);
311  }
312  else
313  refreshInterfaceVisualization(interfaceVisualization, networkInterface);
314  }
315  }
316  }
317  }
318  else
319  throw cRuntimeError("Unknown signal");
320 }

◆ refreshInterfaceVisualization()

virtual void inet::visualizer::InterfaceTableVisualizerBase::refreshInterfaceVisualization ( const InterfaceVisualization interfaceVisualization,
const NetworkInterface networkInterface 
)
protectedpure virtual

◆ removeAllInterfaceVisualizations()

void inet::visualizer::InterfaceTableVisualizerBase::removeAllInterfaceVisualizations ( )
protectedvirtual
247 {
248  std::vector<const InterfaceVisualization *> removedIntefaceVisualizations;
249  for (auto it : interfaceVisualizations)
250  removedIntefaceVisualizations.push_back(it.second);
251  for (auto it : removedIntefaceVisualizations) {
253  delete it;
254  }
255 }

Referenced by preDelete(), and updateAllInterfaceVisualizations().

◆ removeInterfaceVisualization()

void inet::visualizer::InterfaceTableVisualizerBase::removeInterfaceVisualization ( const InterfaceVisualization interfaceVisualization)
protectedvirtual

◆ subscribe()

void inet::visualizer::InterfaceTableVisualizerBase::subscribe ( )
protectedvirtual

◆ unsubscribe()

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

Referenced by preDelete().

◆ updateAllInterfaceVisualizations()

void inet::visualizer::InterfaceTableVisualizerBase::updateAllInterfaceVisualizations ( )
protectedvirtual

Member Data Documentation

◆ backgroundColor

cFigure::Color inet::visualizer::InterfaceTableVisualizerBase::backgroundColor
protected

◆ displayBackground

bool inet::visualizer::InterfaceTableVisualizerBase::displayBackground = false
protected

◆ displayInterfaceTables

bool inet::visualizer::InterfaceTableVisualizerBase::displayInterfaceTables = false
protected

Referenced by initialize(), and preDelete().

◆ displayWiredInterfacesAtConnections

bool inet::visualizer::InterfaceTableVisualizerBase::displayWiredInterfacesAtConnections = false
protected

◆ font

cFigure::Font inet::visualizer::InterfaceTableVisualizerBase::font
protected

◆ format

StringFormat inet::visualizer::InterfaceTableVisualizerBase::format
protected

◆ interfaceFilter

InterfaceFilter inet::visualizer::InterfaceTableVisualizerBase::interfaceFilter
protected

◆ interfaceVisualizations

std::map<std::pair<int, int>, const InterfaceVisualization *> inet::visualizer::InterfaceTableVisualizerBase::interfaceVisualizations
protected

◆ nodeFilter

NetworkNodeFilter inet::visualizer::InterfaceTableVisualizerBase::nodeFilter
protected

◆ opacity

◆ placementHint

Placement inet::visualizer::InterfaceTableVisualizerBase::placementHint
protected

◆ placementPriority

double inet::visualizer::InterfaceTableVisualizerBase::placementPriority
protected

◆ textColor


The documentation for this class was generated from the following files:
inet::visualizer::InterfaceTableVisualizerBase::displayBackground
bool displayBackground
Definition: InterfaceTableVisualizerBase.h:52
inet::visualizer::InterfaceTableVisualizerBase::subscribe
virtual void subscribe()
Definition: InterfaceTableVisualizerBase.cc:159
inet::NetworkInterface::F_STATE
@ F_STATE
Definition: NetworkInterface.h:146
inet::visualizer::InterfaceTableVisualizerBase::textColor
cFigure::Color textColor
Definition: InterfaceTableVisualizerBase.h:59
inet::StringFormat::parseFormat
void parseFormat(const char *format)
Definition: StringFormat.cc:12
inet::NetworkInterface::F_IPV4_DATA
@ F_IPV4_DATA
Definition: NetworkInterface.h:150
inet::visualizer::InterfaceTableVisualizerBase::getNetworkNode
virtual cModule * getNetworkNode(const InterfaceVisualization *interfaceVisualization)
Definition: InterfaceTableVisualizerBase.cc:181
inet::visualizer::InterfaceTableVisualizerBase::interfaceFilter
InterfaceFilter interfaceFilter
Definition: InterfaceTableVisualizerBase.h:54
inet::visualizer::InterfaceFilter::matches
bool matches(const NetworkInterface *networkInterface) const
Definition: InterfaceFilter.cc:19
inet::Ipv4InterfaceData::F_NETMASK
@ F_NETMASK
Definition: Ipv4InterfaceData.h:78
inet::visualizer::InterfaceTableVisualizerBase::backgroundColor
cFigure::Color backgroundColor
Definition: InterfaceTableVisualizerBase.h:60
inet::visualizer::InterfaceTableVisualizerBase::opacity
double opacity
Definition: InterfaceTableVisualizerBase.h:61
inet::getContainingNode
cModule * getContainingNode(const cModule *from)
Find the node containing the given module.
Definition: ModuleAccess.cc:40
inet::visualizer::parsePlacement
Placement parsePlacement(const char *s)
Definition: Placement.cc:14
inet::visualizer::NetworkNodeFilter::matches
bool matches(const cModule *module) const
Definition: NetworkNodeFilter.cc:19
inet::visualizer::InterfaceTableVisualizerBase::refreshInterfaceVisualization
virtual void refreshInterfaceVisualization(const InterfaceVisualization *interfaceVisualization, const NetworkInterface *networkInterface)=0
inet::visualizer::InterfaceTableVisualizerBase::removeAllInterfaceVisualizations
virtual void removeAllInterfaceVisualizations()
Definition: InterfaceTableVisualizerBase.cc:246
inet::visualizer::InterfaceTableVisualizerBase::removeInterfaceVisualization
virtual void removeInterfaceVisualization(const InterfaceVisualization *interfaceVisualization)
Definition: InterfaceTableVisualizerBase.cc:240
inet::visualizer::InterfaceTableVisualizerBase::unsubscribe
virtual void unsubscribe()
Definition: InterfaceTableVisualizerBase.cc:168
inet::visualizer::InterfaceTableVisualizerBase::displayWiredInterfacesAtConnections
bool displayWiredInterfacesAtConnections
Definition: InterfaceTableVisualizerBase.h:51
inet::visualizer::InterfaceTableVisualizerBase::interfaceVisualizations
std::map< std::pair< int, int >, const InterfaceVisualization * > interfaceVisualizations
Definition: InterfaceTableVisualizerBase.h:64
inet::interfaceDeletedSignal
simsignal_t interfaceDeletedSignal
Definition: Simsignals.cc:31
inet::NetworkInterface::F_CARRIER
@ F_CARRIER
Definition: NetworkInterface.h:146
inet::visualizer::InterfaceTableVisualizerBase::updateAllInterfaceVisualizations
virtual void updateAllInterfaceVisualizations()
Definition: InterfaceTableVisualizerBase.cc:257
inet::visualizer::InterfaceTableVisualizerBase::getInterfaceVisualization
virtual const InterfaceVisualization * getInterfaceVisualization(cModule *networkNode, NetworkInterface *networkInterface)
Definition: InterfaceTableVisualizerBase.cc:207
inet::visualizer::NetworkNodeFilter::setPattern
void setPattern(const char *pattern)
Definition: NetworkNodeFilter.cc:14
inet::visualizer::InterfaceTableVisualizerBase::addAllInterfaceVisualizations
virtual void addAllInterfaceVisualizations()
Definition: InterfaceTableVisualizerBase.cc:220
inet::visualizer::InterfaceTableVisualizerBase::placementHint
Placement placementHint
Definition: InterfaceTableVisualizerBase.h:56
inet::visualizer::InterfaceFilter::setPattern
void setPattern(const char *pattern)
Definition: InterfaceFilter.cc:14
inet::visualizer::InterfaceTableVisualizerBase::font
cFigure::Font font
Definition: InterfaceTableVisualizerBase.h:58
inet::interfaceStateChangedSignal
simsignal_t interfaceStateChangedSignal
Definition: Simsignals.cc:32
inet::INITSTAGE_LOCAL
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
inet::isNetworkNode
bool isNetworkNode(const cModule *mod)
Returns true if the given module is a network node, i.e.
Definition: ModuleAccess.cc:18
inet::visualizer::InterfaceTableVisualizerBase::format
StringFormat format
Definition: InterfaceTableVisualizerBase.h:55
inet::visualizer::InterfaceTableVisualizerBase::createInterfaceVisualization
virtual InterfaceVisualization * createInterfaceVisualization(cModule *networkNode, NetworkInterface *networkInterface)=0
inet::Ipv4InterfaceData::F_IP_ADDRESS
@ F_IP_ADDRESS
Definition: Ipv4InterfaceData.h:78
inet::StringFormat::formatString
const char * formatString(IDirectiveResolver *resolver) const
Definition: StringFormat.cc:17
inet::visualizer::InterfaceTableVisualizerBase::displayInterfaceTables
bool displayInterfaceTables
Definition: InterfaceTableVisualizerBase.h:50
inet::visualizer::InterfaceTableVisualizerBase::placementPriority
double placementPriority
Definition: InterfaceTableVisualizerBase.h:57
Enter_Method
#define Enter_Method(...)
Definition: SelfDoc.h:71
inet::interfaceIpv4ConfigChangedSignal
simsignal_t interfaceIpv4ConfigChangedSignal
Definition: Simsignals.cc:35
inet::visualizer::VisualizerBase::visualizationSubjectModule
cModule * visualizationSubjectModule
Definition: VisualizerBase.h:26
inet::visualizer::InterfaceTableVisualizerBase::addInterfaceVisualization
virtual void addInterfaceVisualization(const InterfaceVisualization *interfaceVisualization)
Definition: InterfaceTableVisualizerBase.cc:214
inet::interfaceCreatedSignal
simsignal_t interfaceCreatedSignal
Definition: Simsignals.cc:30
inet::interfaceConfigChangedSignal
simsignal_t interfaceConfigChangedSignal
Definition: Simsignals.cc:33
inet::visualizer::InterfaceTableVisualizerBase::nodeFilter
NetworkNodeFilter nodeFilter
Definition: InterfaceTableVisualizerBase.h:53
inet::visualizer::VisualizerBase::initialize
virtual void initialize(int stage) override
Definition: VisualizerBase.cc:23