From dcc02f9b3ef2083f89c54ea3e9a8ad7cccf791d3 Mon Sep 17 00:00:00 2001 From: Adam Kocoloski Date: Wed, 30 Jun 2010 16:41:47 -0400 Subject: better naming for event manager and sync event handler --- src/mem3_event.erl | 74 ------------------------------------------------- src/mem3_sup.erl | 9 +++--- src/mem3_sync_event.erl | 74 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+), 79 deletions(-) delete mode 100644 src/mem3_event.erl create mode 100644 src/mem3_sync_event.erl (limited to 'src') diff --git a/src/mem3_event.erl b/src/mem3_event.erl deleted file mode 100644 index 59156adc..00000000 --- a/src/mem3_event.erl +++ /dev/null @@ -1,74 +0,0 @@ --module(mem3_event). - --behaviour(gen_event). - --export([init/1, handle_event/2, handle_call/2, handle_info/2, terminate/2, - code_change/3]). - --include("mem3.hrl"). - -init([]) -> - {ok, []}. - -handle_event({node_join, Node}, State) -> - start_repl({node_join, Node}, State); - -handle_event({nodeup, Node}, State) -> - start_repl({nodeup, Node}, State); - -handle_event({node_leave, Node}, State) -> - stop_repl({node_leave, Node}, State); - -handle_event({nodedown, Node}, State) -> - stop_repl({nodedown, Node}, State); - -handle_event(Event, State) -> - ?LOG_ERROR("unexpected event in dbs handler ~p", [Event]), - {ok, State}. - -handle_call(Request, State) -> - ?LOG_ERROR("unexpected call in dbs handler ~p", [Request]), - {ok, ok, State}. - -handle_info(Info, State) -> - ?LOG_ERROR("unexpected msg in dbs handler ~p", [Info]), - {ok, State}. - -terminate(_Reason, _State) -> - ok. - -code_change(_OldVsn, State, _Extra) -> - {ok, State}. - -%% -%% internal -%% - -start_repl({Reason, Node}, State) -> - ChildSpec = dbs:childspec(Node), - case supervisor:start_child(dbs, ChildSpec) of - {ok, _} -> - ok; - {error, {already_started, _Child}} -> - ok; - {error, running} -> - ok; - {error, already_present} -> - case supervisor:restart_child(dbs, ChildSpec) of - {ok, _} -> - ok; - {error, running} -> - ok; - {error, Reason} -> - ?LOG_ERROR("dbs repl restart failed ~p", [Reason]) - end; - {error, Reason} -> - ?LOG_ERROR("dbs repl start failed ~p", [Reason]) - end, - {ok, State}. - -stop_repl({Reason, Node}, State) -> - ?LOG_INFO("dbs repl ~p --> ~p terminating (~p)", [node(), Node, Reason]), - supervisor:terminate_child(dbs, Node), - supervisor:delete_child(dbs, Node), - {ok, State}. diff --git a/src/mem3_sup.erl b/src/mem3_sup.erl index 122e68d7..0a9f66d0 100644 --- a/src/mem3_sup.erl +++ b/src/mem3_sup.erl @@ -8,15 +8,14 @@ start_link() -> init(_Args) -> Children = [ child(mem3_server), - child(mem3_event), + child(mem3_events), child(mem3_sync), child(mem3_cache) ], {ok, {{one_for_one,10,1}, Children}}. -child(mem3_event) -> - MFA = {gen_event, start_link, [{local,mem3_event}]}, - {mem3_event, MFA, permanent, 1000, worker, dynamic}; +child(mem3_events) -> + MFA = {gen_event, start_link, [{local, mem3_events}]}, + {mem3_events, MFA, permanent, 1000, worker, dynamic}; child(Child) -> {Child, {Child, start_link, []}, permanent, 1000, worker, [Child]}. - \ No newline at end of file diff --git a/src/mem3_sync_event.erl b/src/mem3_sync_event.erl new file mode 100644 index 00000000..1a360bde --- /dev/null +++ b/src/mem3_sync_event.erl @@ -0,0 +1,74 @@ +-module(mem3_sync_event). + +-behaviour(gen_event). + +-export([init/1, handle_event/2, handle_call/2, handle_info/2, terminate/2, + code_change/3]). + +-include("mem3.hrl"). + +init([]) -> + {ok, []}. + +handle_event({node_join, Node}, State) -> + start_repl({node_join, Node}, State); + +handle_event({nodeup, Node}, State) -> + start_repl({nodeup, Node}, State); + +handle_event({node_leave, Node}, State) -> + stop_repl({node_leave, Node}, State); + +handle_event({nodedown, Node}, State) -> + stop_repl({nodedown, Node}, State); + +handle_event(Event, State) -> + ?LOG_ERROR("unexpected event in dbs handler ~p", [Event]), + {ok, State}. + +handle_call(Request, State) -> + ?LOG_ERROR("unexpected call in dbs handler ~p", [Request]), + {ok, ok, State}. + +handle_info(Info, State) -> + ?LOG_ERROR("unexpected msg in dbs handler ~p", [Info]), + {ok, State}. + +terminate(_Reason, _State) -> + ok. + +code_change(_OldVsn, State, _Extra) -> + {ok, State}. + +%% +%% internal +%% + +start_repl({Reason, Node}, State) -> + ChildSpec = dbs:childspec(Node), + case supervisor:start_child(dbs, ChildSpec) of + {ok, _} -> + ok; + {error, {already_started, _Child}} -> + ok; + {error, running} -> + ok; + {error, already_present} -> + case supervisor:restart_child(dbs, ChildSpec) of + {ok, _} -> + ok; + {error, running} -> + ok; + {error, Reason} -> + ?LOG_ERROR("dbs repl restart failed ~p", [Reason]) + end; + {error, Reason} -> + ?LOG_ERROR("dbs repl start failed ~p", [Reason]) + end, + {ok, State}. + +stop_repl({Reason, Node}, State) -> + ?LOG_INFO("dbs repl ~p --> ~p terminating (~p)", [node(), Node, Reason]), + supervisor:terminate_child(dbs, Node), + supervisor:delete_child(dbs, Node), + {ok, State}. -- cgit v1.2.3