Frage zu Funktionen von cPacket, cMessage (OMNeT++)
-
Ich habe ein Netzwerk mit 2 Sendern und 2 Empfängern von Paketen, zwischen den Teilnehmern sind Router und Repeater verteilt.
Pakete können sich im Netzwerk "verlaufen". Die Empfängern sollen erkennen können, ob sie evtl. eine Nachricht irrtümlich erhalten haben.
Ich dachte, das geht mit ...
if (strcmp((msg->getOwner())->getName(), my_partner)==0) ...
.. leider wird als Owner immer der vorherige Netzwerkknoten (also ein Repeater oder Router) ausgegeben. Bietet cMessage oder cPacket eine Möglichkeit, den ursprünglichen "Besitzer" zu ermitteln, also den, der die Nachricht erzeugt hat?
Vielleicht etwas wie getOriginalOwner(), oder so?
-
Ich bezweifle ehrlich gesagt dass dir da so schnell einer ne Antwort drauf geben kann, zumal es hier im Forum hauptsächlich um standard-C++, boost und ähnliches geht. Wenn es ein Forum oder eine Mailingliste zum Thema OMNeT++ gibts hast du dort vermutlich deutlich bessere Chancen, eine schnelle und fundierte Antwort zu bekommen.
z.B hier: http://www.omnetpp.org/ gibts ein Mailinglist-Archiv sowie ein Wiki
-
... geht es ja nur um eine Methode aus cMessage, die mir den "Urheber" zurückgibt. Ich hoffe mal, dass das hier noch einer weis ...
-
Ich habe mittlerweile herausbekommen, das die Lösung, so, wie ich sie mir vorstellte nicht existiert.
Man kann aber cMessage vererben lassen, und in die Kind-Klasse die Variablen srcAdress und destAdress einfügen. Mit diesen Parametern kann man das Problem geschickt umgehen. Allerdings muss die neue Klasse (z.B. my_cMessage), um von handleMessage(cMessage *msg) verarbeitet werden zu können, mit checkAndCast auf einen cMessage-Zeiger umgelegt werden.