Omnet++,我怎样才能得到一个模块的所有预定事件的列表?

Omnet++, How can I get list of all scheduled events of a module?

我正在针对 omnet++ 中的节点安排事件列表:

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

单个模块的未来事件列表中可能会有多个这样的时间表。

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

据我所知cancelEvent(msg)只取消一个事件。如何找到列表并删除所有事件。请帮忙

要访问 所有 未来事件的列表,可以使用 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());