一个演员如何在一个组内获得远程演员ip?
例如,我有两个演员A和B,他们都加入了一个小组聊天室。 A和B是在不同的机器上产生的。
然后B给团队发送一个消息,A可以接收并采取行动。 现在A想知道B收到的每条消息的B的IP。有没有办法实现这个功能?我从https://github.com/actor-framework/actor-framework/issues/419找到了一个类似的答案。但我不确定这对团体来说也是合适的。
答案 0 :(得分:1)
收到邮件后,您可以致电self->current_sender()
获取发件人的句柄。然后你可以从这个句柄中获取node_id
,如果它与你自己的node_id
不同,请向中间人询问连接细节。
auto sender = self->current_sender();
if (!sender)
return; // anonymous message
auto x = sender->node();
if (x == self->node())
return; // not a remote actor
auto mm = system.middleman().actor_handle();
self()->request(mm, get_atom::value, x).receive(
[&](const node_id& nid, const std::string& addr, uint16_t port) {
assert(nid == x);
cout << "address: " << addr << ", port = " << port << endl;
}
);
但是,这不是稳定API的一部分。这意味着它可能会改变,所以请记住这一点。