aboutsummaryrefslogtreecommitdiffstats
path: root/lib/ssh/src/ssh_userreg.erl
diff options
context:
space:
mode:
authorNiclas Eklund <[email protected]>2011-05-04 12:30:18 +0200
committerNiclas Eklund <[email protected]>2011-05-04 12:30:18 +0200
commitb39153c1db8e311e6fb759f7c778b10340902890 (patch)
treecbe8961e12d4a94785164914bc5c753f2c57cffe /lib/ssh/src/ssh_userreg.erl
parentaecb7fc8cc7fd930bc50d7d1a0415e0776b99937 (diff)
parentc2d329efd69a6040c94a724c935ce18e7edf0afe (diff)
downloadotp-b39153c1db8e311e6fb759f7c778b10340902890.tar.gz
otp-b39153c1db8e311e6fb759f7c778b10340902890.tar.bz2
otp-b39153c1db8e311e6fb759f7c778b10340902890.zip
Merge branch 'maint-r14' into dev
Diffstat (limited to 'lib/ssh/src/ssh_userreg.erl')
-rw-r--r--lib/ssh/src/ssh_userreg.erl28
1 files changed, 21 insertions, 7 deletions
diff --git a/lib/ssh/src/ssh_userreg.erl b/lib/ssh/src/ssh_userreg.erl
index 33c801f490..f901461aea 100644
--- a/lib/ssh/src/ssh_userreg.erl
+++ b/lib/ssh/src/ssh_userreg.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%% Copyright Ericsson AB 2008-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -25,11 +25,18 @@
-behaviour(gen_server).
%% API
--export([start_link/0, register_user/2, lookup_user/1]).
+-export([start_link/0,
+ register_user/2,
+ lookup_user/1,
+ delete_user/1]).
%% gen_server callbacks
--export([init/1, handle_call/3, handle_cast/2, handle_info/2,
- terminate/2, code_change/3]).
+-export([init/1,
+ handle_call/3,
+ handle_cast/2,
+ handle_info/2,
+ terminate/2,
+ code_change/3]).
-record(state, {user_db = []}).
@@ -46,6 +53,9 @@ start_link() ->
register_user(User, Cm) ->
gen_server:cast(?MODULE, {register, {User, Cm}}).
+delete_user(Cm) ->
+ gen_server:cast(?MODULE, {delete, Cm}).
+
lookup_user(Cm) ->
gen_server:call(?MODULE, {get_user, Cm}, infinity).
@@ -82,9 +92,10 @@ handle_call({get_user, Cm}, _From, #state{user_db = Db} = State) ->
%% {stop, Reason, State}
%% Description: Handling cast messages
%%--------------------------------------------------------------------
-handle_cast({register, UserCm}, State0) ->
- State = insert(UserCm, State0),
- {noreply, State}.
+handle_cast({register, UserCm}, State) ->
+ {noreply, insert(UserCm, State)};
+handle_cast({delete, UserCm}, State) ->
+ {noreply, delete(UserCm, State)}.
%%--------------------------------------------------------------------
%% Function: handle_info(Info, State) -> {noreply, State} |
@@ -118,6 +129,9 @@ code_change(_OldVsn, State, _Extra) ->
insert({User, Cm}, #state{user_db = Db} = State) ->
State#state{user_db = [{User, Cm} | Db]}.
+delete(Cm, #state{user_db = Db} = State) ->
+ State#state{user_db = lists:keydelete(Cm, 2, Db)}.
+
lookup(_, []) ->
undefined;
lookup(Cm, [{User, Cm} | _Rest]) ->