我可以在 C 节点中获得 Erlang OTP 行为吗?

发布于 2024-10-13 05:01:03 字数 612 浏览 7 评论 0原文

例如,现在我有一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

暮年慕年 2024-10-20 05:01:03

无法直接使用 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文