C++ 使用Omnet+生成perodic消息+;来自同一源节点

C++ 使用Omnet+生成perodic消息+;来自同一源节点,c++,omnet++,C++,Omnet++,我有一个给定的网络,其节点有以下两种方法: void Txc13::initialize() { // Module 0 sends the first message if (getIndex() == 0) { // Boot the process scheduling the initial message as a self-message. TicTocMsg13 *msg = generateMessage(); si

我有一个给定的网络,其节点有以下两种方法:

void Txc13::initialize()
{
    // Module 0 sends the first message
    if (getIndex() == 0) {
        // Boot the process scheduling the initial message as a self-message.
        TicTocMsg13 *msg = generateMessage();
        simtime_t delay = par("delayTime");
        scheduleAt(simTime()+delay, msg);
    }
}

void Txc13::handleMessage(cMessage *msg)
{
    // we do some casting to access the fields inside the message
    TicTocMsg13 *ttmsg = check_and_cast<TicTocMsg13 *>(msg);

    if (ttmsg->getDestination() == getIndex()) {
        // Message arrived.
        bubble("ARRIVED!");
        delete ttmsg;
    }
    else {
        // We need to forward the message.
        forwardMessage(ttmsg);
    }
}
void Txc13::initialize()
{
//模块0发送第一条消息
如果(getIndex()==0){
//启动进程,将初始消息作为自我消息进行调度。
TicTocMsg13*msg=generateMessage();
simtime_t delay=par(“delayTime”);
scheduleAt(simTime()+延迟,msg);
}
}
void Txc13::handleMessage(cMessage*msg)
{
//我们执行一些强制转换来访问消息中的字段
TicTocMsg13*ttmsg=检查和铸造(msg);
如果(ttmsg->getDestination()==getIndex()){
//消息传来了。
泡泡(“到了!”);
删除ttmsg;
}
否则{
//我们需要转发消息。
转发消息(ttmsg);
}
}
这个很好用。当离开节点0(
getIndex()==0
)的消息到达其预期目的地时,模拟结束

现在,我愿意在一些
延迟后触发几条离开
node0
的消息

延迟呈指数分布
网络。tic[*]。延迟时间=指数(10s)

如何从同一节点触发多条消息


谢谢

好的,我想我明白了。这是两种方法的代码。在
initialize
方法中,我创建了一个
事件
消息,我最初在
t=0时触发该消息

void Txc13::initialize()
{
    // Create the event object we'll use for timing -- just any ordinary message.
    event = new cMessage("event");
    // Module 0 sends the first message
    if (getIndex() == 0) {
        scheduleAt(0.0, event);
    }
}
void Txc13::handleMessage(cMessage *msg)
{
    if (msg == event and getIndex() == 0){
        TicTocMsg13 *msg = generateMessage();
        simtime_t delay = par("delayTime");
        scheduleAt(simTime()+delay, event);
        forwardMessage(msg);
    }
    else {
        // we do some casting to access the fields inside the message
        TicTocMsg13 *ttmsg = check_and_cast<TicTocMsg13 *>(msg);

        if (ttmsg->getDestination() == getIndex()) {
            // Message arrived.
            //EV << "Message " << ttmsg << " arrived after " << ttmsg->getHopCount() << " hops.\n";
            bubble("ARRIVED!");
            delete ttmsg;

            // Generate another one.
            //EV << "Generating another message: ";
            //TicTocMsg13 *newmsg = generateMessage();
            //EV << newmsg << endl;
            //forwardMessage(newmsg);
        }
        else {
            // We need to forward the message.
            forwardMessage(ttmsg);
        }
    }
}
handleMessage
方法中,我检查传入消息是否为
事件。如果是这样,我会等待
simtime\u t delay=par(“delayTime”)
,它呈指数分布,发送另一条自我消息,并在消息本身上转发

因为我希望所有消息都从node0开始,所以我还使用
getIndex()==0
检查这一点

void Txc13::handleMessage(cMessage *msg)
{
    if (msg == event and getIndex() == 0){
        TicTocMsg13 *msg = generateMessage();
        simtime_t delay = par("delayTime");
        scheduleAt(simTime()+delay, event);
        forwardMessage(msg);
    }
    else {
        // we do some casting to access the fields inside the message
        TicTocMsg13 *ttmsg = check_and_cast<TicTocMsg13 *>(msg);

        if (ttmsg->getDestination() == getIndex()) {
            // Message arrived.
            //EV << "Message " << ttmsg << " arrived after " << ttmsg->getHopCount() << " hops.\n";
            bubble("ARRIVED!");
            delete ttmsg;

            // Generate another one.
            //EV << "Generating another message: ";
            //TicTocMsg13 *newmsg = generateMessage();
            //EV << newmsg << endl;
            //forwardMessage(newmsg);
        }
        else {
            // We need to forward the message.
            forwardMessage(ttmsg);
        }
    }
}
void Txc13::handleMessage(cMessage*msg)
{
if(msg==event和getIndex()==0){
TicTocMsg13*msg=generateMessage();
simtime_t delay=par(“delayTime”);
scheduleAt(simTime()+延迟,事件);
转发消息(msg);
}
否则{
//我们执行一些强制转换来访问消息中的字段
TicTocMsg13*ttmsg=检查和铸造(msg);
如果(ttmsg->getDestination()==getIndex()){
//消息传来了。
//电动汽车