Omnet ++,我如何获得模块的所有预定事件的列表?

时间:2016-03-01 05:33:15

标签: omnet++

我正在使用以下方式安排omnet ++中节点的事件列表:

scheduleAt(simTime().dbl() + slotTime, msg)

在单个模块的未来事件列表中可能有多个此类计划。

现在,在给定的时刻,我想取消节点的所有未来预定事件,这就是我需要所有未来事件列表的原因。

据我所知,cancelEvent(msg)只取消一项活动。如何查找列表并删除所有事件。请帮忙。

1 个答案:

答案 0 :(得分:2)

要访问所有以后的活动列表,可以使用getMessageQueue()。并且要仅删除自己的事件(即自我消息),必须使用isSelfMessage()检查该列表中的每个事件。示例代码,用于删除未来事件集中的所有自我消息:

cMessageHeap& heap = cSimulation::getActiveSimulation()->getMessageQueue();
cMessageHeap::Iterator it(heap);
do {
    cMessage * event = it();
    if (event && event->isSelfMessage()) {
        cancelAndDelete(event);
        it.init(heap);
    } else {
        it++;
    }

} while (!it.end());