【发布时间】:2015-12-25 11:37:45
【问题描述】:
我有一个 GenEvent 服务器,当我向主服务器发送事件通知时,我希望能够添加几个进程来获取转发事件。
我可以创建一个转发器模块并传递一个 pid 来发送消息,但是因为它看起来像它必须是一个常见的模式,我想知道是否有更好的方法。
在GenEvent docs 中,处理程序的类型是
handler :: atom | {atom, term} | {pid, reference}
当我尝试将最后一个表单的处理程序添加到 GenEvent 服务器时,我总是收到错误。
GenEvent.add_mon_handler(pid, {self, make_ref}, [])
{:error,
{:badarg,
[{:erlang, :apply, [#PID<0.59.0>, :init, [[]]], []},
{GenEvent, :do_handler, 3, [file: 'lib/gen_event.ex', line: 990]},
{GenEvent, :do_add_handler, 5, [file: 'lib/gen_event.ex', line: 947]},
{GenEvent, :handle_msg, 5, [file: 'lib/gen_event.ex', line: 608]},
{:proc_lib, :init_p_do_apply, 3, [file: 'proc_lib.erl', line: 240]}]}}
elixir 文档中没有关于如何添加由 pid 和引用组成的处理程序的更多信息。 gen_event 的 erlang documentation 仅使用 atom 和 {atom, term} 形式的处理程序显示它。
【问题讨论】:
标签: pid elixir erlang-otp