Я новичок в OMNeT ++, и я хочу создать простой механизм широковещания, в котором начальный узел отправляет сообщение и передает его всем узлам, соединенным в топологии сетки. Когда msg достигает пункта назначения, оно будет удалено и больше не будет транслироваться. Постоянно я работаю над этим с 2-х дней, следуя его официальной документации. Мой код успешно смоделирован. Но он не удаляет сообщение, когда достигает пункта назначения. Я начинаю с 25 узлов (компьютер), в которых исходный узел - computer0, а конечный узел - computer24. Скажи мне, где я не прав. Ниже мой исходный код:
#include <stdio.h>
#include <string.h>
#include <omnetpp.h>
using namespace omnetpp;
class computer : public cSimpleModule
{
protected:
virtual void forwardMessage(cMessage *msg);
virtual void initialize() override;
virtual void handleMessage(cMessage *msg) override;
};
Define_Module(computer);
void computer::initialize()
{
if (getIndex() == 0) {
char msgname[20];
sprintf(msgname, "msg-%d", getIndex());
cMessage *msg = new cMessage(msgname);
scheduleAt(0.0, msg);
}
}
void computer::handleMessage(cMessage *msg)
{
if (getIndex() == 24) {
EV << "Message " << msg << " arrived.\n";
delete msg;
}
else {
forwardMessage(msg);
}
}
void computer::forwardMessage(cMessage *msg)
{
int n = gateSize("gate");
int k = intuniform(0, n-1);
EV << "Forwarding message " << msg << " on gate[" << k << "]\n";
send(msg, "gate$o", k);
}
оснастка моделирования: https://i.stack.imgur.com/a4JRQ.png