Erlang中文论坛

标题: otp行为 介绍 [打印本页]

作者: high佬全    时间: 2015-2-6 02:45
标题: otp行为 介绍
  首先一个完整的otp应该包含 应用(application) -》 监控进程 (supervisor) -》 通用服务器(gen_server)
这三者之间的关系 通过application 创建 supervisor ,然后再由supervisor 创建 通用服务器或另一个监控进程。
   不过这次我先介绍gen_server这块。
  1gen_server:start_link/4 和start/4应该是最常见了 启动服务器的函数,详细参数我就不说了,大家在本站看
而它作用就是初始化,不过最重要就就是返回{ok,LoopData},这个LoopDate的作用很大,它是一个循环数据。
作个列子就是有玩家登陆服务器,你用start_link/4初始化时了创建玩家的各种属性,那么这个Player就可以放到
这个LoopData中。
  2消息的传递 :gen_server:cast/2 gen_server:call/3
cast是异步消息请求,call是同步的。他们作用是向服务器发送消息,而负责处理接受消息的是hanld_cast/2和
hanld_call/3 ,重点就是他们的中有一个参数是上面的LoopData,在处理消息时你可以修改这个LoopData,最后
都要返回一个新的LoopData,这样就能根据客户端的动作行为来改变玩家的属性。
3停止服务器 这里用到了terminate/2回调函数
stop() ->
    gen_server:cast(?MODULE,stop).
handle_cast(stop,LoopDate) ->
    {stop,Reason,LoopData}.或{stop,Reason,Reply,LoopData}%固定格式来调用terminate/2
terminate(Reason,LoopData) -> ....

当然 你不会想让客户端拥有关闭服务器的能力,所以这个stop一般都是不会导出和实现的.

   





欢迎光临 Erlang中文论坛 (https://bbs.erldoc.com/) Powered by Discuz! X3.3