2016-03-01 38 views
0

我在OMNET調度事件的列表對一個節點++使用:Omnet ++,如何獲取模塊的所有預定事件的列表?

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

,並有可能爲一個單獨的模塊在未來的事件列表中的多個這樣的時間表。

現在在給定的時刻,我想取消節點的所有未來預定事件,這就是爲什麼我需要列出所有未來事件。

據我所知,cancelEvent(msg)只取消一個事件。我如何找到列表並刪除所有事件。請幫忙。

回答

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()); 
+0

不幸的是,此解決方案不適用於OMNeT ++ 5.0及更高版本。 Changelog說:'cSimulation:刪除msgQueue和getMessageQueue();添加getFES() 作爲替換(返回cFutureEventSet *)' –

相關問題