queue - (OMNeT++) 为什么 PacketQueue 总是 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
模块上匹配,并且未指定将返回哪个模块。
推荐阅读
- javascript - 为什么我的 html 表单没有通过 ajax 将值返回给 views.py?
- java - 即使在注册和登录时,JWT 也会请求令牌
- python - 删除功能制作问题
- node.js - Discord.js 无法在 Ubuntu 18.04 上播放 mp3 文件
- arrays - 在 Swift 中将包含对象的数组序列化到 Avro
- javascript - C3 Javascript为什么子图表在移动设备中不起作用?
- powerbi - 将 SAP BW 连接到 Azure 的方法?
- c# - 使用 Selenium 和 C# 与 Chrome 打开文件对话框交互
- python - Django:有没有办法过滤模型并忽略存储的连字符?
- swift - 如何使用 Cloud Firestore 中的 GeoPoint 获取位置?