(OMNeT++) 为什么 PacketQueue 总是 0?

(OMNeT++) Why PacketQueue is always 0?

我正在尝试在 OMNeT++ 中编写一个应用程序,该应用程序从调用它的节点获取队列长度并将其发送到另一个节点。

计划修改路由器中调用的UdpBasicApp.cc文件,使其获取DropTailQueue模块的队列长度。

网上搜索了一下,发现这个方法是对的...

cModule *mod = getModuleByPath("router3.eth[*].mac.queue");                  
queueing::PacketQueue *queue = check_and_cast<queueing::PacketQueue*>(mod);
int c = queue->getNumPackets();
EV << c;

...因为 DropTailQueue 扩展了 PacketQueue 模块。 我在最后打印了一张,看看是否有问题。 当我运行仿真时,使用修改后的UdpBasicApp模块,c一直为0。 我几乎不怀疑队列总是0,但我不知道如何验证这个怀疑。 如果是错误,为什么总是0?

我的猜测是,您查询的队列与您假设的不同。你不应该在你的模型路径中使用模式(即 *),因为它可能匹配多个 eth 模块,并且它是未指定的,哪个将被返回。