Server:基本的服务器
以下是一個(gè)小小的服務(wù)器,可以用回調(diào)模塊作為它的參數(shù)。
-module(server1).
-export([start/2,rpc/2]).
start(Name,Mod)->
register(Name,spawn(fun()->loop(Name,Mod,Mod:init()) end)).
rpc(Name,Request)->
Name!{self(),Request},
receive
{Name,Response}->Response
end.
loop(Name,Mod,State)->
receive
{From,Request}->
{Response,State1}=Mod:handle(Request,State),
From !{Name,Response},
loop(Name,Mod,State1)
end.
編寫server1的一個(gè)回調(diào)模塊,它是一個(gè)名稱服務(wù)器回調(diào)模塊,這段代碼實(shí)際上執(zhí)行兩個(gè)任務(wù),它首先充當(dāng)被服務(wù)器框架代碼調(diào)用的回調(diào)模塊,與此同時(shí),它還包含了將被客戶端調(diào)用的接口方法,OTP的慣例是把這兩類函數(shù)放在同一個(gè)模塊中。
-module(name_server).
-export([init/0,add/2,find/1,handle/2]).
-import(server1,[rpc/2]).
add(Name,Place)->rpc(name_server,{add,Name,Place}).
find(Name)->rpc(name_server,{find,Name}).
init()->dict:new().
handle({add,Name,Place},Dict)->{ok,dict:store(Name,Place,Dict)};
handle({find,Name},Dict)->{dict:find(Name,Dict),Dict}.
Erlang程序設(shè)計(jì)(第2版)【瑞典】Joe Armstrong著,牛化成譯。【M】北京:中國(guó)工信出版社與人民郵電出版社。
總結(jié)
以上是生活随笔為你收集整理的Server:基本的服务器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 微博文摘——女人与ITIL
- 下一篇: 使用RamDiskNT虚拟软盘后vmwa