Current section
Files
Jump to
Current section
Files
src/roster_group.erl
-module(roster_group).
-author('Maxim Sokhatsky').
-include("SMP.hrl").
-include_lib("kvs/include/group.hrl").
-behaviour(gen_server).
-export(?GEN_SERVER).
-compile(export_all).
start_link(Parameters) -> gen_server:start_link(?MODULE, Parameters, []).
handle_call({get},_,Proc) -> { reply,Proc,Proc };
handle_call(Command,_,Proc) -> { reply,{unknown,Command},Proc }.
init(Group) ->
kvs:info(?MODULE,"Group ~p spawned ~p~n",[Group#group.id,self()]),
G = case kvs:get(group,Group#group.id) of
{ok,Exists} -> Exists;
{error,_} -> Group end,
wf:cache({group,G#group.id},self()),
{ok, G#group{}}.
handle_cast(Msg, State) ->
kvs:info(?MODULE,"Unknown API async: ~p", [Msg]),
{stop, {error, {unknown_cast, Msg}}, State}.
handle_info({'DOWN', _MonitorRef, _Type, _Object, _Info} = Msg, State = #group{id=Id}) ->
kvs:info(?MODULE, "connection closed, shutting down session:~p", [Msg]),
wf:cache({group,Id},undefined),
{stop, normal, State};
handle_info(Info, State=#group{}) ->
kvs:info(?MODULE,"Unrecognized info: ~p", [Info]),
{noreply, State}.
terminate(_Reason, #group{id=Id}) ->
kvs:info(?MODULE,"Terminating session Id cache: ~p", [Id]),
wf:cache({group,Id},undefined),
ok.
code_change(_OldVsn, State, _Extra) ->
{ok, State}.