有没有一种简单的方法来回复我收到消息的节点? 即我有一个节点网络,它有多个输入和输出,并相互链接。我从handleMessage()中的某个节点收到一条消息,我甚至可以获得从我的节点获取消息的门ID。但是如何找到我的哪个出局连接到这个节点,从中我得到了消息,以便我可以回复:
send(reply, "out", senderId);
我已经解决了这样的问题,但感觉过于复杂:
cGate * sender = msg->getSenderGate();
for (cModule::GateIterator i(this); !i.end(); i++)
{
cGate *gate = i();
std::string gateStr = gate->getName();
if (gateStr == "out" && gate->getPathEndGate()->getOwnerModule() == sender->getOwnerModule() )
{
int senderId = gate->getIndex();
send(reply, "out", senderId);
}
}
答案 0 :(得分:2)
您使用的是inout
门吗?如果是这样,这可能很简单:
gateHalf(msg->getArrivalGate()->getName(), cGate::OUTPUT)