我尝试将消息转发给gen_server:
gen_server:cast({global, ID}, {watchers}).
Run Code Online (Sandbox Code Playgroud)
处理程序是:
handle_cast({watchers}, State) ->
case State#table_state.watchers of
[] ->
{reply, no_watchers, State};
_ ->
{reply, State#table_state.watchers, State}
end;
Run Code Online (Sandbox Code Playgroud)
但是当我执行gen_server:cast
gen_server时会终止并出现错误:
=ERROR REPORT==== 29-Apr-2011::18:26:07 ===
** Generic server 1 terminating
** Last message in was {'$gen_cast',{watchers}}
** When Server state == {table_state,1,"1",11,[]}
** Reason for termination ==
** {bad_return_value,{reply, no_watchers, {table_state,3,"3",11,[]}}}
Run Code Online (Sandbox Code Playgroud)
我为什么要这样bad_return_value
?
Ada*_*erg 12
您无法使用演员表回复(请参阅gen_server
文档).这是投射异步消息而不是使用调用的重点.
在您的情况下,您想要返回一个回复,所以请gen_server:call/2
改用.
归档时间: |
|
查看次数: |
5567 次 |
最近记录: |