Erlang. Менеджер сессий.

Feb 18, 2010 18:41

Ниже приведен минимальный код, реализующий механизм сессий.

-module(session).
-behaviour(gen_server).

-export([start_link/0,init/1,handle_call/3]).
-export([add/1,del/1,verify/2]).

%%internal function.
newtime()->
{Mega, Seconds, _} = erlang:now(),
Timestamp = Mega * 1000000 + Seconds.
newcookie()->
uuid:v4() .

%%external function
add(Name)->
gen_server:call(session,{add,Name}) .

del(Name)->
gen_server:call(session,{del,Name}) .

verify(A,B)->
[]
.

%%gen_server callback function
init(_Args)->
{ok,[]}
.
start_link() ->
gen_server:start_link({local, session}, session, [], []).

%%Session=[{Name,Cookie,Date},{Name1,Cookie1,Date1}]
handle_call({add,Name}, _From, Session)->
NewSession=Session++[{Name,newcookie(),newtime()}],
{reply, NewSession, NewSession};

handle_call({del,Name}, _From, Session)->
NewSession=[{X,Y,Z} || {X,Y,Z} <- Session, X /= Name],
{reply, NewSession, NewSession}.

где модуль uuid взят http://github.com/travis/erlang-uuid/blob/master/uuid.erl

erlang

Previous post Next post
Up