原创作者: 自由天堂
阅读:2102次
评论:0条
更新时间:2011-06-01
上一篇写了一个服务器,包括基本的请求响应,服务关闭等功能,但是这并不是服务器的全部。
一般来说,服务器应当内部保存若干数据,这些数据参与对request的运算,然后生成response,有时候,这些计算还会改变服务器上的数据本身。我们可以把这些数据抽象为服务器的"状态",当服务器启动时,状态数据被初始化(初始化的工作应该根据环境有所区别)。
话说的真累,其实这就是大名鼎鼎的有限状态机 :-)
看代码:
测试
一般来说,服务器应当内部保存若干数据,这些数据参与对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
评论 共 0 条 请登录后发表评论