INET Framework for OMNeT++/OMNEST
inet::MessageDispatcher Class Reference

This class implements the corresponding module. More...

#include <MessageDispatcher.h>

Inheritance diagram for inet::MessageDispatcher:
inet::DefaultProtocolRegistrationListener inet::IInterfaceRegistrationListener inet::IProtocolRegistrationListener

Classes

class  Key
 

Public Member Functions

virtual void handleRegisterInterface (const NetworkInterface &interface, cGate *out, cGate *in) override
 
virtual void handleRegisterService (const Protocol &protocol, cGate *gate, ServicePrimitive servicePrimitive) override
 
virtual void handleRegisterAnyService (cGate *gate, ServicePrimitive servicePrimitive) override
 
virtual void handleRegisterProtocol (const Protocol &protocol, cGate *gate, ServicePrimitive servicePrimitive) override
 
virtual void handleRegisterAnyProtocol (cGate *gate, ServicePrimitive servicePrimitive) override
 
- Public Member Functions inherited from inet::DefaultProtocolRegistrationListener
virtual void handleRegisterServiceGroup (const ProtocolGroup &protocolGroup, cGate *gate, ServicePrimitive servicePrimitive) override
 
virtual void handleRegisterProtocolGroup (const ProtocolGroup &protocolGroup, cGate *gate, ServicePrimitive servicePrimitive) override
 

Protected Member Functions

virtual void initialize (int stage) override
 
virtual void arrived (cMessage *message, cGate *gate, const SendOptions &options, simtime_t time) override
 
virtual cGate * handlePacket (Packet *packet, cGate *inGate)
 
virtual cGate * handleMessage (Message *request, cGate *inGate)
 

Protected Attributes

bool forwardServiceRegistration
 
bool forwardProtocolRegistration
 
std::map< int, int > socketIdToGateIndex
 
std::map< int, int > interfaceIdToGateIndex
 
std::map< Key, int > serviceToGateIndex
 
std::map< Key, int > protocolToGateIndex
 
const ProtocolregisteringProtocol = nullptr
 
bool registeringAny = false
 

Detailed Description

This class implements the corresponding module.

See module documentation for more details.

Member Function Documentation

◆ arrived()

void inet::MessageDispatcher::arrived ( cMessage *  message,
cGate *  gate,
const SendOptions &  options,
simtime_t  time 
)
overrideprotectedvirtual
38 {
39  Enter_Method("arrived");
40  cGate *outGate = nullptr;
41  if (message->isPacket()) {
42  auto packet = check_and_cast<Packet *>(message);
43  outGate = handlePacket(packet, inGate);
44 #ifdef INET_WITH_QUEUEING
45  handlePacketProcessed(packet);
46 #endif // #ifdef INET_WITH_QUEUEING
47  }
48  else
49  outGate = handleMessage(check_and_cast<Message *>(message), inGate);
50  outGate->deliver(message, options, time);
51 #ifdef INET_WITH_QUEUEING
52  updateDisplayString();
53 #endif // #ifdef INET_WITH_QUEUEING
54 }

◆ handleMessage()

cGate * inet::MessageDispatcher::handleMessage ( Message request,
cGate *  inGate 
)
protectedvirtual
206 {
207  const auto& socketReq = message->findTag<SocketReq>();
208  if (socketReq != nullptr) {
209  int socketReqId = socketReq->getSocketId();
210  auto it = socketIdToGateIndex.find(socketReqId);
211  if (it == socketIdToGateIndex.end())
212  socketIdToGateIndex[socketReqId] = inGate->getIndex();
213  else if (it->first != socketReqId)
214  throw cRuntimeError("handleMessage(): Socket is already registered: socketId = %d, current gateIndex = %d, new gateIndex = %d, pathStartGate = %s, pathEndGate = %s", socketReqId, it->second, inGate->getIndex(), inGate->getPathStartGate()->getFullPath().c_str(), inGate->getPathEndGate()->getFullPath().c_str());
215  }
216  const auto& socketInd = message->findTag<SocketInd>();
217  if (socketInd != nullptr) {
218  int socketId = socketInd->getSocketId();
219  auto it = socketIdToGateIndex.find(socketId);
220  if (it != socketIdToGateIndex.end()) {
221  auto outGate = gate("out", it->second);
222  EV_INFO << "Dispatching message to socket" << EV_FIELD(socketId) << EV_FIELD(inGate) << EV_FIELD(outGate) << EV_FIELD(message) << EV_ENDL;
223  return outGate;
224  }
225  else
226  throw cRuntimeError("handleMessage(): Unknown socket: socketId = %d, pathStartGate = %s, pathEndGate = %s", socketId, inGate->getPathStartGate()->getFullPath().c_str(), inGate->getPathEndGate()->getFullPath().c_str());
227  }
228  const auto& dispatchProtocolReq = message->findTag<DispatchProtocolReq>();
229  if (dispatchProtocolReq != nullptr) {
230  auto servicePrimitive = dispatchProtocolReq->getServicePrimitive();
231  // KLUDGE eliminate this by adding ServicePrimitive to every DispatchProtocolReq
232  if (servicePrimitive == static_cast<ServicePrimitive>(-1))
233  servicePrimitive = SP_REQUEST;
234  auto protocol = dispatchProtocolReq->getProtocol();
235  if (servicePrimitive == SP_REQUEST) {
236  auto it = serviceToGateIndex.find(Key(protocol->getId(), servicePrimitive));
237  if (it != serviceToGateIndex.end()) {
238  auto outGate = gate("out", it->second);
239  EV_INFO << "Dispatching message to service" << EV_FIELD(protocol, *protocol) << EV_FIELD(servicePrimitive) << EV_FIELD(inGate) << EV_FIELD(outGate) << EV_FIELD(message) << EV_ENDL;
240  return outGate;
241  }
242  else {
243  auto it = serviceToGateIndex.find(Key(-1, servicePrimitive));
244  if (it != serviceToGateIndex.end()) {
245  auto outGate = gate("out", it->second);
246  EV_INFO << "Dispatching message to any service" << EV_FIELD(servicePrimitive) << EV_FIELD(inGate) << EV_FIELD(outGate) << EV_FIELD(message) << EV_ENDL;
247  return outGate;
248  }
249  else
250  throw cRuntimeError("handleMessage(): Unknown protocol: protocolId = %d, protocolName = %s, servicePrimitive = REQUEST, pathStartGate = %s, pathEndGate = %s", protocol->getId(), protocol->getName(), inGate->getPathStartGate()->getFullPath().c_str(), inGate->getPathEndGate()->getFullPath().c_str());
251  }
252  }
253  else if (servicePrimitive == SP_INDICATION) {
254  auto it = protocolToGateIndex.find(Key(protocol->getId(), servicePrimitive));
255  if (it != protocolToGateIndex.end()) {
256  auto outGate = gate("out", it->second);
257  EV_INFO << "Dispatching message to protocol" << EV_FIELD(protocol, *protocol) << EV_FIELD(servicePrimitive) << EV_FIELD(inGate) << EV_FIELD(outGate) << EV_FIELD(message) << EV_ENDL;
258  return outGate;
259  }
260  else {
261  auto it = protocolToGateIndex.find(Key(-1, servicePrimitive));
262  if (it != protocolToGateIndex.end()) {
263  auto outGate = gate("out", it->second);
264  EV_INFO << "Dispatching message to any protocol" << EV_FIELD(servicePrimitive) << EV_FIELD(inGate) << EV_FIELD(outGate) << EV_FIELD(message) << EV_ENDL;
265  return outGate;
266  }
267  else
268  throw cRuntimeError("handleMessage(): Unknown protocol: protocolId = %d, protocolName = %s, servicePrimitive = INDICATION, pathStartGate = %s, pathEndGate = %s", protocol->getId(), protocol->getName(), inGate->getPathStartGate()->getFullPath().c_str(), inGate->getPathEndGate()->getFullPath().c_str());
269  }
270  }
271  else
272  throw cRuntimeError("handleMessage(): Unknown service primitive: servicePrimitive = %d, pathStartGate = %s, pathEndGate = %s", static_cast<int>(servicePrimitive), inGate->getPathStartGate()->getFullPath().c_str(), inGate->getPathEndGate()->getFullPath().c_str());
273  }
274  const auto& interfaceReq = message->findTag<InterfaceReq>();
275  if (interfaceReq != nullptr) {
276  int interfaceId = interfaceReq->getInterfaceId();
277  auto it = interfaceIdToGateIndex.find(interfaceId);
278  if (it != interfaceIdToGateIndex.end()) {
279  auto outGate = gate("out", it->second);
280  EV_INFO << "Dispatching message to interface" << EV_FIELD(interfaceId) << EV_FIELD(inGate) << EV_FIELD(outGate) << EV_FIELD(message) << EV_ENDL;
281  return outGate;
282  }
283  else
284  throw cRuntimeError("handleMessage(): Unknown interface: interfaceId = %d, pathStartGate = %s, pathEndGate = %s", interfaceId, inGate->getPathStartGate()->getFullPath().c_str(), inGate->getPathEndGate()->getFullPath().c_str());
285  }
286  throw cRuntimeError("handleMessage(): Unknown message: %s(%s), pathStartGate = %s, pathEndGate = %s", message->getName(), message->getClassName(), inGate->getPathStartGate()->getFullPath().c_str(), inGate->getPathEndGate()->getFullPath().c_str());
287 }

Referenced by arrived().

◆ handlePacket()

cGate * inet::MessageDispatcher::handlePacket ( Packet packet,
cGate *  inGate 
)
protectedvirtual
126 {
127  const auto& socketInd = packet->findTag<SocketInd>();
128  if (socketInd != nullptr) {
129  int socketId = socketInd->getSocketId();
130  auto it = socketIdToGateIndex.find(socketId);
131  if (it != socketIdToGateIndex.end()) {
132  auto outGate = gate("out", it->second);
133  EV_INFO << "Dispatching packet to socket" << EV_FIELD(socketId) << EV_FIELD(inGate) << EV_FIELD(outGate) << EV_FIELD(packet) << EV_ENDL;
134  return outGate;
135  }
136  else
137  throw cRuntimeError("handlePacket(): Unknown socket: socketId = %d, pathStartGate = %s, pathEndGate = %s", socketId, inGate->getPathStartGate()->getFullPath().c_str(), inGate->getPathEndGate()->getFullPath().c_str());
138  }
139  const auto& dispatchProtocolReq = packet->findTag<DispatchProtocolReq>();
140  if (dispatchProtocolReq != nullptr) {
141  const auto& packetProtocolTag = packet->findTag<PacketProtocolTag>();
142  auto servicePrimitive = dispatchProtocolReq->getServicePrimitive();
143  // KLUDGE eliminate this by adding ServicePrimitive to every DispatchProtocolReq
144  if (servicePrimitive == static_cast<ServicePrimitive>(-1)) {
145  if (packetProtocolTag != nullptr && dispatchProtocolReq->getProtocol() == packetProtocolTag->getProtocol())
146  servicePrimitive = SP_INDICATION;
147  else
148  servicePrimitive = SP_REQUEST;
149  }
150  auto protocol = dispatchProtocolReq->getProtocol();
151  if (servicePrimitive == SP_REQUEST) {
152  auto it = serviceToGateIndex.find(Key(protocol->getId(), servicePrimitive));
153  if (it != serviceToGateIndex.end()) {
154  auto outGate = gate("out", it->second);
155  EV_INFO << "Dispatching packet to service" << EV_FIELD(protocol, *protocol) << EV_FIELD(servicePrimitive) << EV_FIELD(inGate) << EV_FIELD(outGate) << EV_FIELD(packet) << EV_ENDL;
156  return outGate;
157  }
158  else {
159  auto it = serviceToGateIndex.find(Key(-1, servicePrimitive));
160  if (it != serviceToGateIndex.end()) {
161  auto outGate = gate("out", it->second);
162  EV_INFO << "Dispatching packet to any service" << EV_FIELD(servicePrimitive) << EV_FIELD(inGate) << EV_FIELD(outGate) << EV_FIELD(packet) << EV_ENDL;
163  return outGate;
164  }
165  else
166  throw cRuntimeError("handlePacket(): Unknown protocol: protocolId = %d, protocolName = %s, servicePrimitive = REQUEST, pathStartGate = %s, pathEndGate = %s", protocol->getId(), protocol->getName(), inGate->getPathStartGate()->getFullPath().c_str(), inGate->getPathEndGate()->getFullPath().c_str());
167  }
168  }
169  else if (servicePrimitive == SP_INDICATION) {
170  auto it = protocolToGateIndex.find(Key(protocol->getId(), servicePrimitive));
171  if (it != protocolToGateIndex.end()) {
172  auto outGate = gate("out", it->second);
173  EV_INFO << "Dispatching packet to protocol" << EV_FIELD(protocol, *protocol) << EV_FIELD(servicePrimitive) << EV_FIELD(inGate) << EV_FIELD(outGate) << EV_FIELD(packet) << EV_ENDL;
174  return outGate;
175  }
176  else {
177  auto it = protocolToGateIndex.find(Key(-1, servicePrimitive));
178  if (it != protocolToGateIndex.end()) {
179  auto outGate = gate("out", it->second);
180  EV_INFO << "Dispatching packet to any protocol" << EV_FIELD(servicePrimitive) << EV_FIELD(inGate) << EV_FIELD(outGate) << EV_FIELD(packet) << EV_ENDL;
181  return outGate;
182  }
183  else
184  throw cRuntimeError("handlePacket(): Unknown protocol: protocolId = %d, protocolName = %s, servicePrimitive = INDICATION, pathStartGate = %s, pathEndGate = %s", protocol->getId(), protocol->getName(), inGate->getPathStartGate()->getFullPath().c_str(), inGate->getPathEndGate()->getFullPath().c_str());
185  }
186  }
187  else
188  throw cRuntimeError("handlePacket(): Unknown service primitive: servicePrimitive = %d, pathStartGate = %s, pathEndGate = %s", static_cast<int>(servicePrimitive), inGate->getPathStartGate()->getFullPath().c_str(), inGate->getPathEndGate()->getFullPath().c_str());
189  }
190  const auto& interfaceReq = packet->findTag<InterfaceReq>();
191  if (interfaceReq != nullptr) {
192  int interfaceId = interfaceReq->getInterfaceId();
193  auto it = interfaceIdToGateIndex.find(interfaceId);
194  if (it != interfaceIdToGateIndex.end()) {
195  auto outGate = gate("out", it->second);
196  EV_INFO << "Dispatching packet to interface" << EV_FIELD(interfaceId) << EV_FIELD(inGate) << EV_FIELD(outGate) << EV_FIELD(packet) << EV_ENDL;
197  return outGate;
198  }
199  else
200  throw cRuntimeError("handlePacket(): Unknown interface: interfaceId = %d, pathStartGate = %s, pathEndGate = %s", interfaceId, inGate->getPathStartGate()->getFullPath().c_str(), inGate->getPathEndGate()->getFullPath().c_str());
201  }
202  throw cRuntimeError("handlePacket(): Unknown packet: %s(%s), pathStartGate = %s, pathEndGate = %s", packet->getName(), packet->getClassName(), inGate->getPathStartGate()->getFullPath().c_str(), inGate->getPathEndGate()->getFullPath().c_str());
203 }

Referenced by arrived().

◆ handleRegisterAnyProtocol()

void inet::MessageDispatcher::handleRegisterAnyProtocol ( cGate *  gate,
ServicePrimitive  servicePrimitive 
)
overridevirtual

Reimplemented from inet::DefaultProtocolRegistrationListener.

373 {
374  Enter_Method("handleRegisterAnyProtocol");
375  if (!registeringAny) {
376  registeringAny = true;
377  EV_INFO << "Handling any protocol registration" << EV_FIELD(servicePrimitive) << EV_FIELD(gate, g) << EV_ENDL;
378  auto key = Key(-1, servicePrimitive);
379  auto it = protocolToGateIndex.find(key);
380  if (it != protocolToGateIndex.end()) {
381  if (it->second != g->getIndex())
382  throw cRuntimeError("handleRegisterAnyProtocol(): any protocol is already registered: servicePrimitive = %d, pathStartGate = %s, pathEndGate = %s", static_cast<int>(servicePrimitive), g->getPathStartGate()->getFullPath().c_str(), g->getPathEndGate()->getFullPath().c_str());
383  }
384  else {
385  protocolToGateIndex[key] = g->getIndex();
387  auto gateName = g->getType() == cGate::INPUT ? "out" : "in";
388  int size = gateSize(gateName);
389  for (int i = 0; i < size; i++)
390  registerAnyProtocol(gate(gateName, i), servicePrimitive);
391  }
392  }
393  registeringAny = false;
394  }
395 }

◆ handleRegisterAnyService()

void inet::MessageDispatcher::handleRegisterAnyService ( cGate *  gate,
ServicePrimitive  servicePrimitive 
)
overridevirtual

Reimplemented from inet::DefaultProtocolRegistrationListener.

319 {
320  Enter_Method("handleRegisterAnyService");
321  if (!registeringAny) {
322  registeringAny = true;
323  EV_INFO << "Handling any service registration" << EV_FIELD(servicePrimitive) << EV_FIELD(gate, g) << EV_ENDL;
324  auto key = Key(-1, servicePrimitive);
325  auto it = serviceToGateIndex.find(key);
326  if (it != serviceToGateIndex.end()) {
327  if (it->second != g->getIndex())
328  throw cRuntimeError("handleRegisterAnyService(): any service is already registered: servicePrimitive = %d, pathStartGate = %s, pathEndGate = %s", static_cast<int>(servicePrimitive), g->getPathStartGate()->getFullPath().c_str(), g->getPathEndGate()->getFullPath().c_str());
329  }
330  else {
331  serviceToGateIndex[key] = g->getIndex();
333  auto gateName = g->getType() == cGate::INPUT ? "out" : "in";
334  int size = gateSize(gateName);
335  for (int i = 0; i < size; i++)
336  registerAnyService(gate(gateName, i), servicePrimitive);
337  }
338  }
339  registeringAny = false;
340  }
341 }

◆ handleRegisterInterface()

void inet::MessageDispatcher::handleRegisterInterface ( const NetworkInterface interface,
cGate *  out,
cGate *  in 
)
overridevirtual

Implements inet::IInterfaceRegistrationListener.

398 {
399  Enter_Method("handleRegisterInterface");
400  EV_INFO << "Handling interface registration" << EV_FIELD(interface) << EV_FIELD(out, out) << EV_FIELD(in) << EV_ENDL;
401  auto it = interfaceIdToGateIndex.find(interface.getInterfaceId());
402  if (it != interfaceIdToGateIndex.end()) {
403  if (it->second != out->getIndex())
404  throw cRuntimeError("handleRegisterInterface(): interface is already registered: interfaceId = %d, interfaceName = %s, pathStartGate = %s, pathEndGate = %s", interface.getInterfaceId(), interface.str().c_str(), out->getPathStartGate()->getFullPath().c_str(), out->getPathEndGate()->getFullPath().c_str());
405  }
406  else {
407  interfaceIdToGateIndex[interface.getInterfaceId()] = out->getIndex();
408  int size = gateSize("out");
409  for (int i = 0; i < size; i++)
410  if (i != in->getIndex())
411  registerInterface(interface, gate("in", i), gate("out", i));
412  }
413 }

◆ handleRegisterProtocol()

void inet::MessageDispatcher::handleRegisterProtocol ( const Protocol protocol,
cGate *  gate,
ServicePrimitive  servicePrimitive 
)
overridevirtual

Reimplemented from inet::DefaultProtocolRegistrationListener.

344 {
345  Enter_Method("handleRegisterProtocol");
346  if (registeringProtocol != nullptr) {
348  throw cRuntimeError("handleRegisterProtocol(): cannot register protocol while another registration is being done");
349  }
350  else {
352  EV_INFO << "Handling protocol registration" << EV_FIELD(protocol) << EV_FIELD(servicePrimitive) << EV_FIELD(gate, g) << EV_ENDL;
353  auto key = Key(protocol.getId(), servicePrimitive);
354  auto it = protocolToGateIndex.find(key);
355  if (it != protocolToGateIndex.end()) {
356  if (it->second != g->getIndex())
357  throw cRuntimeError("handleRegisterProtocol(): protocol is already registered: protocolId = %d, protocolName = %s, servicePrimitive = %d, pathStartGate = %s, pathEndGate = %s", protocol.getId(), protocol.str().c_str(), static_cast<int>(servicePrimitive), g->getPathStartGate()->getFullPath().c_str(), g->getPathEndGate()->getFullPath().c_str());
358  }
359  else {
360  protocolToGateIndex[key] = g->getIndex();
362  auto gateName = g->getType() == cGate::INPUT ? "out" : "in";
363  int size = gateSize(gateName);
364  for (int i = 0; i < size; i++)
365  registerProtocol(protocol, gate(gateName, i), servicePrimitive);
366  }
367  }
368  registeringProtocol = nullptr;
369  }
370 }

◆ handleRegisterService()

void inet::MessageDispatcher::handleRegisterService ( const Protocol protocol,
cGate *  gate,
ServicePrimitive  servicePrimitive 
)
overridevirtual

Reimplemented from inet::DefaultProtocolRegistrationListener.

290 {
291  Enter_Method("handleRegisterService");
292  if (registeringProtocol != nullptr) {
294  throw cRuntimeError("handleRegisterService(): cannot register protocol while another registration is being done");
295  }
296  else {
298  EV_INFO << "Handling service registration" << EV_FIELD(protocol) << EV_FIELD(servicePrimitive) << EV_FIELD(gate, g) << EV_ENDL;
299  auto key = Key(protocol.getId(), servicePrimitive);
300  auto it = serviceToGateIndex.find(key);
301  if (it != serviceToGateIndex.end()) {
302  if (it->second != g->getIndex())
303  throw cRuntimeError("handleRegisterService(): service is already registered: protocolId = %d, protocolName = %s, servicePrimitive = %d, pathStartGate = %s, pathEndGate = %s", protocol.getId(), protocol.str().c_str(), static_cast<int>(servicePrimitive), g->getPathStartGate()->getFullPath().c_str(), g->getPathEndGate()->getFullPath().c_str());
304  }
305  else {
306  serviceToGateIndex[key] = g->getIndex();
308  auto gateName = g->getType() == cGate::INPUT ? "out" : "in";
309  int size = gateSize(gateName);
310  for (int i = 0; i < size; i++)
311  registerService(protocol, gate(gateName, i), servicePrimitive);
312  }
313  }
314  registeringProtocol = nullptr;
315  }
316 }

◆ initialize()

void inet::MessageDispatcher::initialize ( int  stage)
overrideprotectedvirtual
23 {
24 #ifdef INET_WITH_QUEUEING
26 #endif // #ifdef INET_WITH_QUEUEING
27  if (stage == INITSTAGE_LOCAL) {
28  forwardServiceRegistration = par("forwardServiceRegistration");
29  forwardProtocolRegistration = par("forwardProtocolRegistration");
30  WATCH_MAP(socketIdToGateIndex);
31  WATCH_MAP(interfaceIdToGateIndex);
32  WATCH_MAP(serviceToGateIndex);
33  WATCH_MAP(protocolToGateIndex);
34  }
35 }

Member Data Documentation

◆ forwardProtocolRegistration

bool inet::MessageDispatcher::forwardProtocolRegistration
protected

◆ forwardServiceRegistration

bool inet::MessageDispatcher::forwardServiceRegistration
protected

◆ interfaceIdToGateIndex

std::map<int, int> inet::MessageDispatcher::interfaceIdToGateIndex
protected

◆ protocolToGateIndex

std::map<Key, int> inet::MessageDispatcher::protocolToGateIndex
protected

◆ registeringAny

bool inet::MessageDispatcher::registeringAny = false
protected

◆ registeringProtocol

const Protocol* inet::MessageDispatcher::registeringProtocol = nullptr
protected

◆ serviceToGateIndex

std::map<Key, int> inet::MessageDispatcher::serviceToGateIndex
protected

◆ socketIdToGateIndex

std::map<int, int> inet::MessageDispatcher::socketIdToGateIndex
protected

The documentation for this class was generated from the following files:
inet::queueing::PacketProcessorBase::initialize
virtual void initialize(int stage) override
Definition: PacketProcessorBase.cc:16
inet::MessageDispatcher::forwardProtocolRegistration
bool forwardProtocolRegistration
Definition: MessageDispatcher.h:57
protocol
removed DscpReq Ipv4ControlInfo Ipv6ControlInfo up L3AddressInd DispatchProtocolReq L4PortInd Ipv4ControlInfo Ipv6ControlInfo down protocol
Definition: IUdp-gates.txt:25
inet::MessageDispatcher::registeringAny
bool registeringAny
Definition: MessageDispatcher.h:64
inet::registerAnyProtocol
void registerAnyProtocol(cGate *gate, ServicePrimitive servicePrimitive)
Definition: IProtocolRegistrationListener.cc:129
InterfaceReq
removed InterfaceReq
Definition: IUdp-gates.txt:11
inet::ServicePrimitive
ServicePrimitive
Enum generated from inet/common/ProtocolTag.msg:53 by opp_msgtool.
Definition: ProtocolTag_m.h:172
DispatchProtocolReq
removed DscpReq Ipv4ControlInfo Ipv6ControlInfo up L3AddressInd DispatchProtocolReq L4PortInd Ipv4ControlInfo Ipv6ControlInfo down DispatchProtocolReq
Definition: IUdp-gates.txt:25
inet::MessageDispatcher::registeringProtocol
const Protocol * registeringProtocol
Definition: MessageDispatcher.h:63
inet::registerAnyService
void registerAnyService(cGate *gate, ServicePrimitive servicePrimitive)
Definition: IProtocolRegistrationListener.cc:60
inet::MessageDispatcher::handleMessage
virtual cGate * handleMessage(Message *request, cGate *inGate)
Definition: MessageDispatcher.cc:205
inet::registerService
void registerService(const Protocol &protocol, cGate *gate, ServicePrimitive servicePrimitive)
Registers a service primitive (SDU processing) at the given gate.
Definition: IProtocolRegistrationListener.cc:14
PacketProtocolTag
removed DscpReq Ipv4ControlInfo Ipv6ControlInfo up L3AddressInd DispatchProtocolReq L4PortInd Ipv4ControlInfo Ipv6ControlInfo down PacketProtocolTag
Definition: IUdp-gates.txt:25
inet::MessageDispatcher::handlePacket
virtual cGate * handlePacket(Packet *packet, cGate *inGate)
Definition: MessageDispatcher.cc:125
inet::units::units::g
milli< kg >::type g
Definition: Units.h:1071
EV_FIELD
#define EV_FIELD(...)
Definition: INETDefs.h:112
inet::INITSTAGE_LOCAL
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
inet::MessageDispatcher::protocolToGateIndex
std::map< Key, int > protocolToGateIndex
Definition: MessageDispatcher.h:62
inet::MessageDispatcher::forwardServiceRegistration
bool forwardServiceRegistration
Definition: MessageDispatcher.h:56
inet::MessageDispatcher::serviceToGateIndex
std::map< Key, int > serviceToGateIndex
Definition: MessageDispatcher.h:61
inet::SP_INDICATION
@ SP_INDICATION
Definition: ProtocolTag_m.h:175
inet::MessageDispatcher::socketIdToGateIndex
std::map< int, int > socketIdToGateIndex
Definition: MessageDispatcher.h:59
Enter_Method
#define Enter_Method(...)
Definition: SelfDoc.h:71
inet::registerInterface
void registerInterface(const NetworkInterface &interface, cGate *in, cGate *out)
Definition: IInterfaceRegistrationListener.cc:12
inet::Macho::Key
void * Key
Definition: Macho.h:327
inet::registerProtocol
void registerProtocol(const Protocol &protocol, cGate *gate, ServicePrimitive servicePrimitive)
Registers a protocol primitive (PDU processing) at the given gate.
Definition: IProtocolRegistrationListener.cc:83
EV_ENDL
#define EV_ENDL
Definition: INETDefs.h:114
inet::SP_REQUEST
@ SP_REQUEST
Definition: ProtocolTag_m.h:174
inet::MessageDispatcher::interfaceIdToGateIndex
std::map< int, int > interfaceIdToGateIndex
Definition: MessageDispatcher.h:60