erlang服务器通用框架

%% @author ping
%% @doc @todo Add description to server.

%% erlang服务器通用框架
-module(server).
-export([start/2,call/2,cast/2]).

start(Name,Mod)->
	register(Name,spawn(fun()->loop(Name,Mod,Mod:init())end)).

loop(Name,Mod,State)->
	receive
		{From,call,Request}->
			{Response,NewState} = Mod:handle_call(Request,State),
			From ! {Name,Response},
			loop(Name,Mod,NewState);
		{From,cast,Request}->
			NewState = Mod:handle_cast(Request,State),
			loop(Name,Mod,NewState)		
	end.

call(Name,Request)->
	Name ! {self(),call,Request},
	receive
		{Name,Response} -> Response
	end.

cast(Name,Request)->
	Name ! { self(),call,Request }.
%% @author ping
%% @doc @todo Add description to storage.


-module(storage).
-export([init/0,handle_call/2,add/2,find/1,start/0]).

init()->
	dict:new().

handle_call({add,Key,Value},Dict)->
	{ok,dict:store(Key, Value, Dict)};
handle_call({find,Key},Dict)->
	{dict:find(Key, Dict),Dict}.

add(Key,Value)->
	server:call(kv_server, {add,Key,Value}).
find(Key)->
	server:call(kv_server, {find,Key}).

start()->
	server:start(kv_server, ?MODULE).


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值