同步调用——Call
同步请求 alloc() 是使用 gen_server:call/2 实现的:
- alloc() ->
- gen_server:call(ch3, alloc).
ch3 是gen_server的名字,必须和启动时的名字一样。 alloc 是实际的请求。
请求以消息的形式发送给这个gen_server。当收到了请求之后,gen_server调用 handle_call(Request,From,State) ,它应返回一个元组 {reply,Reply,State1}。Reply是需要回馈给客户端的答复,同时 State1 是gen_server的状态的新值。
- handle_call(alloc, _From, Chs) ->
- {Ch, Chs2} = alloc(Chs),
- {reply, Ch, Chs2}.
在这里,应答是分配了的频道 Ch 然后gen_server将等待新的请求,并且现在保持了一个最新的可用频道的列表。
当前内容版权归 ShiningRay 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 ShiningRay .