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());
我正在针对 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());