Erlang将消息转发给全局gen_server

时间:2011-04-20 07:29:50

标签: erlang gen-server

继续普遍存在question

我有gen_server:

start(UserName) ->
    case gen_server:start({global, UserName}, player, [], []) of
    {ok, _} ->
        io:format("Player: " ++ UserName ++ " started");
    {error, Error} ->
        Error
    end
    ...

如何正确地向此gen_server发送消息。例如:在我做的另一个文件中:

gen_server:cast(test, message).

在我的gen_server文件中,我有:

handle_cast(message, State) ->
    io:format("Message receiving \r\n"),
    {noreply, State};

我用测试名称启动gen_server:

  

服务器:启动(测试)。   测试开始了

当我调用gen_server:cast(test, message).时,shell中没有任何输出。我怎样才能检查handle_cast是否呼叫?

谢谢。

1 个答案:

答案 0 :(得分:3)

而不是

gen_server:cast(test, message).

gen_server:cast({global, test}, message).

如果您将名称注册为{global,name},则必须将其命名为{global,name}

如果你的处理程序被调用,它将在shell中打印“Message receiving \ r \ n”。你用io:format call。