问题标签 [gen-fsm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
237 浏览

erlang - 我怎么知道这是由 erlang 中的主管重新启动我的进程的最后一个周期

我有一个有孩子的simple_one_for_one主管。gen_fsm我希望每个gen_fsm孩子只在最后一次终止时发送一条消息。有没有办法知道最后一个周期是什么时候?

这是我的主管:

Pid是启动监督者并下达命令启动子进程的进程的 Pid。

我的观点是,如果进程在任何状态下失败,它应该仅在它最后一次由主管重新启动时发送消息(根据其重新启动策略)。

如果gen_fsm失败,它是否从具有相同状态数据的相同状态重新启动?如果不是,我怎么能导致它发生?

0 投票
1 回答
77 浏览

erlang - 使用不止一种 erlang 行为

我有一个 erlang gen_fsm 进程,它使用 erlang 的内置 gen_tcp 通过 tcp 与远程服务器通信。

我想让它成为一个 web-socket 客户端。经过一番调查,我得到了这个 erlang websocket 客户端库Erlang Websocket client

看一些例子,看起来我必须使用

-行为(websocket_client_handler)。

基本上,我在 start_link 中执行此操作

但是,另一种行为期望 init 有不同的返回值和不同的状态。我的 gen_fsm 已经有了一个状态。

有人可以为此提供一些背景信息。

我认为为同一个模块定义两种行为并没有错,但鉴于每种行为在 init/[1/2] 函数中需要不同的返回类型,我开始思考这是否真的可行。只是想联系有经验的人。

谢谢。

0 投票
1 回答
237 浏览

erlang - erlang:send_after 消息延迟

我有以下代码:

然后在 gen_fsm 我将这些消息处理为:

用于发送延迟最多 48 小时的消息的代码。大多数时候一切都很好。

但是,如果我的 gen_fsm 有大量传入消息,则 new_status 消息最多会延迟 15 分钟。

这个错误出现的频率并不高,但确实很烦人。

并知道可能是什么原因以及解决它的最佳方法是什么?

0 投票
1 回答
243 浏览

erlang - 将 Learn You Some Erlang 教程从 gen_fsm 转换为 gen_statem

我一直在阅读本教程的Rage Against The Finite State Machine一章,它使用了 gen_fsm,它已被弃用,取而代之的是 gen_statem。运行测试时,我总是卡住,因为其中一个客户端处于协商状态并接收到一个accept_negotiate 事件。(也许还有其他错误,但现在我无法弄清楚为什么会这样)。

trade_statem.erl

trade_calls.erl

谢谢你的时间!