Package: inet.common
MessageDispatcher
simple moduleThis module connects multiple applications, protocols and interfaces with each other and automatically dispatches messages and packets between them. It allows many different configurations from layered architectures where message dispatchers separate different communication layers to centralized architectures where a single message dispatcher is connected to all components.
Configuring the dispatch mechanism:
- protocols must register by calling registerService and/or registerProtocol
- interfaces must register by calling registerInterface
- sockets must register by sending socket messages
- packets must have tags attached which specifie the destination protocol, interface or socket
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Used in compound modules
Name | Type | Description |
---|---|---|
AccessPoint | compound module |
A generic access point supporting multiple wireless radios, and multiple ethernet ports. The type of the ethernet MAC, relay unit and wireless card can be specified as parameters. |
ApplicationLayerNodeBase | compound module | (no description) |
DirectionReverserLayer | compound module |
This module provides a layer that combines the decision for local delivery with the service of reversing the direction of an incoming packet to outgoing for packet forwarding. |
EthernetHost | compound module |
An example host with one Ethernet port and a traffic generator that generates request-reply traffic directly over Ethernet. This host model does not contain higher layer protocols (IP, TCP). By default it is configured to use half-duplex MAC (CSMA/CD). |
EthernetSwitch | compound module |
Model of an Ethernet switch. |
ExtUpperIpv4NetworkLayer | compound module | (no description) |
ForwardingService | compound module | (no description) |
Ieee8022LlcLayer | compound module | (no description) |
InterfaceService | compound module | (no description) |
Ipv4NetworkLayer | compound module |
Network layer of an IPv4 node. |
Ipv6NetworkLayer | compound module |
Represents an IPv6 network layer (L3). |
LdpMplsRouter | compound module |
An LDP-capable router. |
LinkLayerNodeBase | compound module | (no description) |
NetworkLayerNodeBase | compound module | (no description) |
NextHopNetworkLayer | compound module |
This module provides a network layer for the next hop forwarding. |
RsvpMplsRouter | compound module |
An RSVP-TE capable router. |
SimpleNetworkLayer | compound module |
This module provides a simple network layer. |
TcpServerApp | compound module |
This module is a generic TCP server application with a TCP server listener that creates TCP server connections. |
TransportLayerNodeBase | compound module | (no description) |
WiseRouteNetworkLayer | compound module |
This module provides a simple network layer. |
Extends
Name | Type | Description |
---|---|---|
PacketProcessorBase | simple module |
This is a base module for various packet processing modules which maintains a few statistics. |
Parameters
Name | Type | Default value | Description |
---|---|---|---|
displayStringTextFormat | string | "processed %p pk (%l)" |
determines the text that is written on top of the submodule |
forwardServiceRegistration | bool | true | |
forwardProtocolRegistration | bool | true |
Properties
Name | Value | Description |
---|---|---|
display | i=-;b=100,5,,,,1; | |
class | MessageDispatcher |
Gates
Name | Direction | Size | Description |
---|---|---|---|
in [ ] | input | ||
out [ ] | output |
Direct method calls (observed)
call to | function | info |
---|---|---|
MessageDispatcher | inet::MessageDispatcher::arrived | arrived |
MessageDispatcher | inet::MessageDispatcher::handleRegisterAnyProtocol | handleRegisterAnyProtocol |
MessageDispatcher | inet::MessageDispatcher::handleRegisterAnyService | handleRegisterAnyService |
MessageDispatcher | inet::MessageDispatcher::handleRegisterInterface | handleRegisterInterface |
MessageDispatcher | inet::MessageDispatcher::handleRegisterProtocol | handleRegisterProtocol |
MessageDispatcher | inet::MessageDispatcher::handleRegisterService | handleRegisterService |
MessageDispatcher | inet::MessageDispatcher::pushPacket | pushPacket |
ExampleQosClassifier | inet::ExampleQosClassifier::handleRegisterProtocol | handleRegisterProtocol |
ExampleQosClassifier | inet::ExampleQosClassifier::handleRegisterService | handleRegisterService |
QosClassifier | inet::QosClassifier::handleRegisterProtocol | handleRegisterProtocol |
QosClassifier | inet::QosClassifier::handleRegisterService | handleRegisterService |
LayeredEthernetInterface | inet::NetworkInterface::pushPacket | pushPacket |
EthernetEncapsulation | inet::EthernetEncapsulation::handleRegisterAnyProtocol | handleRegisterAnyProtocol |
EthernetEncapsulation | inet::EthernetEncapsulation::handleRegisterProtocol | handleRegisterProtocol |
EthernetEncapsulation | inet::EthernetEncapsulation::handleRegisterService | handleRegisterService |
PacketDirectionReverser | inet::PacketDirectionReverser::pushPacket | pushPacket |
RelayInterfaceLearner | inet::RelayInterfaceLearner::pushPacket | pushPacket |
EthernetCutthroughInterface | inet::NetworkInterface::pushPacket | pushPacket |
EthernetFcsChecker | inet::EthernetFcsChecker::pushPacket | pushPacket |
EthernetMacHeaderInserter | inet::EthernetMacHeaderInserter::pushPacket | pushPacket |
Ieee80211LlcLpd | inet::ieee80211::Ieee80211LlcLpd::handleRegisterProtocol | handleRegisterProtocol |
Ieee80211LlcLpd | inet::ieee80211::Ieee80211LlcLpd::handleRegisterService | handleRegisterService |
Ieee8021qTagEpdHeaderChecker | inet::Ieee8021qTagEpdHeaderChecker::pushPacket | pushPacket |
Ieee8021qTagEpdHeaderInserter | inet::Ieee8021qTagEpdHeaderInserter::pushPacket | pushPacket |
Ieee8021rTagEpdHeaderChecker | inet::Ieee8021rTagEpdHeaderChecker::pushPacket | pushPacket |
Ieee8021rTagEpdHeaderInserter | inet::Ieee8021rTagEpdHeaderInserter::pushPacket | pushPacket |
Ieee8022Llc | inet::Ieee8022Llc::handleRegisterProtocol | handleRegisterProtocol |
Ieee8022Llc | inet::Ieee8022Llc::handleRegisterService | handleRegisterService |
VirtualInterface | inet::NetworkInterface::pushPacket | pushPacket |
VlanIndFilter | inet::VlanIndFilter::pushPacket | pushPacket |
Flooding | inet::Flooding::handleRegisterProtocol | handleRegisterProtocol |
Flooding | inet::Flooding::handleRegisterService | handleRegisterService |
Icmpv6 | inet::Icmpv6::handleRegisterProtocol | handleRegisterProtocol |
Icmpv6 | inet::Icmpv6::handleRegisterService | handleRegisterService |
Icmp | inet::Icmp::handleRegisterProtocol | handleRegisterProtocol |
Icmp | inet::Icmp::handleRegisterService | handleRegisterService |
Igmpv2 | inet::Igmpv2::handleRegisterProtocol | handleRegisterProtocol |
Igmpv2 | inet::Igmpv2::handleRegisterService | handleRegisterService |
Ipv4 | inet::Ipv4::handleRegisterProtocol | handleRegisterProtocol |
Ipv4 | inet::Ipv4::handleRegisterService | handleRegisterService |
Ipv6 | inet::Ipv6::handleRegisterProtocol | handleRegisterProtocol |
Ipv6 | inet::Ipv6::handleRegisterService | handleRegisterService |
Mpls | inet::Mpls::handleRegisterProtocol | handleRegisterProtocol |
Mpls | inet::Mpls::handleRegisterService | handleRegisterService |
NextHopForwarding | inet::NextHopForwarding::handleRegisterProtocol | handleRegisterProtocol |
NextHopForwarding | inet::NextHopForwarding::handleRegisterService | handleRegisterService |
AdaptiveProbabilisticBroadcast | inet::AdaptiveProbabilisticBroadcast::handleRegisterProtocol | handleRegisterProtocol |
AdaptiveProbabilisticBroadcast | inet::AdaptiveProbabilisticBroadcast::handleRegisterService | handleRegisterService |
ProbabilisticBroadcast | inet::ProbabilisticBroadcast::handleRegisterProtocol | handleRegisterProtocol |
ProbabilisticBroadcast | inet::ProbabilisticBroadcast::handleRegisterService | handleRegisterService |
WiseRoute | inet::WiseRoute::handleRegisterProtocol | handleRegisterProtocol |
WiseRoute | inet::WiseRoute::handleRegisterService | handleRegisterService |
StreamDecoder | inet::StreamDecoder::pushPacket | pushPacket |
PacketClassifier | inet::queueing::PacketClassifier::pushPacket | pushPacket |
PacketMultiplexer | inet::queueing::PacketMultiplexer::pushPacket | pushPacket |
Called methods (observed)
Outgoing messages (observed)
Pushed in messages (observed)
Push out messages (observed)
Shared Tagging operations (observed)
tagType | tagAction |
---|---|
DispatchProtocolReq | findTag |
InterfaceReq | findTag |
PacketProtocolTag | findTag |
SocketInd | findTag |
SocketReq | findTag |
Source code
// // This module connects multiple applications, protocols and interfaces with // each other and automatically dispatches messages and packets between them. // It allows many different configurations from layered architectures where // message dispatchers separate different communication layers to centralized // architectures where a single message dispatcher is connected to all components. // // Configuring the dispatch mechanism: // - protocols must register by calling registerService and/or registerProtocol // - interfaces must register by calling registerInterface // - sockets must register by sending socket messages // - packets must have tags attached which specifie the destination protocol, interface or socket // simple MessageDispatcher extends PacketProcessorBase { parameters: bool forwardServiceRegistration = default(true); bool forwardProtocolRegistration = default(true); @class(MessageDispatcher); @display("i=-;b=100,5,,,,1;"); gates: input in[]; output out[]; }File: src/inet/common/MessageDispatcher.ned