浏览 3520 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-05-03
最后修改:2010-05-09
上一篇写了一个服务器,包括基本的请求响应,服务关闭等功能,但是这并不是服务器的全部。
一般来说,服务器应当内部保存若干数据,这些数据参与对request的运算,然后生成response,有时候,这些计算还会改变服务器上的数据本身。我们可以把这些数据抽象为服务器的"状态",当服务器启动时,状态数据被初始化(初始化的工作应该根据环境有所区别)。 话说的真累,其实这就是大名鼎鼎的有限状态机 :-) 看代码: % my_server4.erl % -module(my_server4). -export([start/1,init/1]). start(Env) -> spawn(my_server4,init,[Env]). init(Env) -> State = Env, loop(State). loop(State) -> receive { request,From,Request } -> {Res,State2} = deal_with(Request,State), From ! {Res}, loop(State2); stop -> io:format("process stopped.last state is ~p~n",[State]) end. deal_with(Request,State) -> {State,Request}. 测试 Eshell V5.7.2 (abort with ^G) 1> c(my_server4),c(my_client). {ok,my_client} 2> C = my_client:start(),S = my_server4:start("init"). <0.45.0> 3> S ! {request, C, "changed"}. client - {"init"} {request,<0.44.0>,"changed"} 4> S ! stop. process stopped.last state is "changed" stop 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |