-module(one).
-export([start/0,getIP/1,appendIP/2,removeIP/1,cacheHost/1]).
start()->
Pid=spawn(?MODULE,cacheHost,[#{}]), %spawn开启进程 模块名,函数名,参数
register(cache,Pid). %register内置函数 注册 给Pid取一个原子的名字
getIP(Host)->
Pid=whereis(cache),
Pid!{get,Host,self()}, %self()获取客户端IP
receive
Response -> Response
end.
appendIP(Host,IP)->
Pid=whereis(cache),
Pid!{append,Host,IP,self()},
receive
Response -> Response
end.
removeIP(Host)->
Pid=whereis(cache),
Pid!{remove,Host,self()},
receive
Response -> Response
end.
cacheHost(MAP)->
receive % 关键字 接收到的数据
{append,Host,IP,Client}->
M2=maps:put(Host,IP,MAP),
Client!appendSucc,
cacheHost(M2);
{get,Host,Client}->
Client!maps:get(Host,MAP),
cacheHost(MAP);
{remove,Host,Client}->
M2=maps:remove(Host,MAP),
Client!removeSucc,
cacheHost(M2);
_Any->
argsError
end.
语法不太习惯