diff options
author | Linus Nordberg <linus@sunet.se> | 2019-06-30 23:22:02 +0200 |
---|---|---|
committer | Linus Nordberg <linus@sunet.se> | 2019-06-30 23:22:02 +0200 |
commit | cf495efa541318719f1d8eeddecad96e6091aa0c (patch) | |
tree | 02907a21404051ef32e63bbcbcb06dbe533fb5b1 /p11p-daemon | |
parent | a0a85e3c0fe9ade9fb3c9171e99e2c8d0308293f (diff) |
rename manager functions to reflect where the policy lives
Servers and remotes (soon renamed "clients") are not the ones
implementing policy. They should therefore report events to the
manager which then imposes policy.
Diffstat (limited to 'p11p-daemon')
-rw-r--r-- | p11p-daemon/src/p11p_remote.erl | 2 | ||||
-rw-r--r-- | p11p-daemon/src/p11p_remote_manager.erl | 18 | ||||
-rw-r--r-- | p11p-daemon/src/p11p_server.erl | 2 |
3 files changed, 11 insertions, 11 deletions
diff --git a/p11p-daemon/src/p11p_remote.erl b/p11p-daemon/src/p11p_remote.erl index 200afdc..12f513d 100644 --- a/p11p-daemon/src/p11p_remote.erl +++ b/p11p-daemon/src/p11p_remote.erl @@ -78,7 +78,7 @@ handle_info({Port, {data, Data}}, #state{msg = Msg} = State) when Port == State# {noreply, handle_remote_data(State, Msg, Data)}; handle_info({timeout, Timer, Port}, #state{token = TokName} = State) when Port == State#state.port, Timer == State#state.timer -> lager:info("~p: rpc request timed out, exiting", [self()]), - ok = p11p_remote_manager:timeout(TokName), + ok = p11p_remote_manager:server_change(timeout, [TokName]), NewState = State#state{timer = undefined}, {stop, normal, NewState}; handle_info(Info, State) -> diff --git a/p11p-daemon/src/p11p_remote_manager.erl b/p11p-daemon/src/p11p_remote_manager.erl index 633a4aa..d2bbd11 100644 --- a/p11p-daemon/src/p11p_remote_manager.erl +++ b/p11p-daemon/src/p11p_remote_manager.erl @@ -12,8 +12,8 @@ %% API. -export([start_link/0]). --export([remote_for_token/1, kill_remote/2]). % For servers. --export([timeout/1]). % For remotes. +-export([remote_for_token/1, client_change/2]). % For servers. +-export([server_change/2]). % For remotes. %% Genserver callbacks. -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, @@ -44,11 +44,11 @@ start_link() -> -spec remote_for_token(string()) -> pid(). remote_for_token(TokName) -> gen_server:call(?MODULE, {remote_for_token, TokName}). -kill_remote(TokName, Pid) -> - gen_server:call(?MODULE, {kill_remote, {TokName, Pid}}). +client_change(Change, Args) -> + gen_server:call(?MODULE, {client_change, Change, Args}). -timeout(TokName) -> - gen_server:call(?MODULE, {timeout, TokName}). +server_change(Change, Args) -> + gen_server:call(?MODULE, {server_change, Change, Args}). %% Genserver callbacks. init([]) -> @@ -68,7 +68,7 @@ handle_call({remote_for_token, TokName}, _From, #state{tokens = Tokens} = State) _ -> {reply, Pid, State} end; -handle_call({timeout, TokName}, _From, #state{tokens = Tokens} = State) -> +handle_call({server_change, timeout, [TokName]}, _From, #state{tokens = Tokens} = State) -> lager:debug("~p: ~s: timed out", [self(), TokName]), %% TODO: do some code dedup with remote_for_token? #{TokName := Token} = Tokens, @@ -79,12 +79,12 @@ handle_call({timeout, TokName}, _From, #state{tokens = Tokens} = State) -> NewState = State#state{tokens = Tokens#{TokName := NewToken}}, lager:debug("~p: ~s: updated token: ~p", [self(), TokName, NewToken]), {reply, ok, NewState}; -handle_call({kill_remote, {TokName, Pid}}, From, #state{tokens = Tokens} = State) -> +handle_call({client_change, client_gone, [TokName, Pid]}, From, #state{tokens = Tokens} = State) -> lager:debug("~p: killing off remote ~p on request from ~p", [self(), Pid, From]), gen_server:stop(Pid), #{TokName := Token} = Tokens, Remotes = Token#token.remotes, - NewRemotes = lists:map(fun(E) -> + NewRemotes = lists:map(fun(E) -> % TODO: any risk of losing list order? case E#remote.pid of Pid -> E#remote{pid = undefined}; _ -> E diff --git a/p11p-daemon/src/p11p_server.erl b/p11p-daemon/src/p11p_server.erl index ed2c719..f0feec7 100644 --- a/p11p-daemon/src/p11p_server.erl +++ b/p11p-daemon/src/p11p_server.erl @@ -96,7 +96,7 @@ handle_info(Info, State) -> terminate(_Reason, #state{socket = Socket, tokname = TokName, remote = Remote}) -> lager:debug("~p: terminated", [self()]), gen_tcp:close(Socket), - p11p_remote_manager:kill_remote(TokName, Remote), + p11p_remote_manager:client_change(client_gone, [TokName, Remote]), ok. code_change(_OldVersion, State, _Extra) -> |