我可以在 C 节点中获得 Erlang OTP 行为吗?
例如,现在我有一个 C 节点(称为 CN),它连接到一个 erlang 节点(称为 EN)并使用 RPC 来使用 OTP 行为。因此,要将事件从 CN 发送到 EN 上的事件管理器,我将 CN 连接到 EN 并执行
args = erl_format("[data_man, {~f, ~f}]", ch.at(0), ch.at(1));
erl_rpc_to(fd, "gen_event", "notify", args);
但是,那么,我的 C 节点确实没有作为节点运行(即为什么要创建一个仅使用远程过程调用的节点?)。
有没有办法在 C 节点中直接使用 OTP 行为?
如果没有,我是否应该查看 OTP 使用的消息格式并使用该格式发送消息(即我可以欺骗 OTP 行为吗?)? 我不喜欢这个想法,我必须注意 OTP 等实现中的变化。
我的要求有严格的延迟限制,这对我在 C 之间的通信选择有何影响process 和 Erlang(RPC 会让我陷入困境吗?等等)?
For example, right now I have a C Node (call it CN) which connects to an erlang node (call it EN) and uses a RPC to use OTP behaviors. Hence, to send an event from CN to an event manager on EN I connect CN to EN and do
args = erl_format("[data_man, {~f, ~f}]", ch.at(0), ch.at(1));
erl_rpc_to(fd, "gen_event", "notify", args);
But, then, my C Node really isn't behaving as a node (i.e. why create a node that only uses remote procedure calls?).
Is there a way to directly use OTP behaviors within a C Node?
If there isn't, should I look under the hood at the message formats being used by OTP and send messages using that format (i.e. can I spoof OTP behaviors?)? I don't like this idea, I'll have to watch for changes in the implementation of OTP etc.
I have hard latency limits in my requirements, how does this effect my choice of communication between a C process and Erlang (are RPCs going to bog me down? etc.)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
无法直接使用 C 中的 OTP 行为。我也不认为您应该模仿 OTP 行为来直接使用它们。
您应该首先使用 RPC,然后根据性能要求测试您的代码。如果需要,您始终可以向您的 gen_event 进程发送一条简单的消息,使其通过其 handle_info/2 方法通知自己。
There is no way to directly use OTP behaviours from C. I also don't think you should mimic the OTP behaviours to use them directly.
You should just first use RPC and then test your code against your performance requirements. If needed, you could always send a simple message to your gen_event process to make it notify itself through its handle_info/2 method.