aboutsummaryrefslogtreecommitdiff
path: root/apps/dreki/src/dreki_event_manager.erl
diff options
context:
space:
mode:
Diffstat (limited to 'apps/dreki/src/dreki_event_manager.erl')
-rw-r--r--apps/dreki/src/dreki_event_manager.erl32
1 files changed, 32 insertions, 0 deletions
diff --git a/apps/dreki/src/dreki_event_manager.erl b/apps/dreki/src/dreki_event_manager.erl
new file mode 100644
index 0000000..a392692
--- /dev/null
+++ b/apps/dreki/src/dreki_event_manager.erl
@@ -0,0 +1,32 @@
+-module(dreki_event_manager).
+-include_lib("kernel/include/logger.hrl").
+-define(SERVER, {local, ?MODULE}).
+-export([start_link/1]).
+-export([add_handler/2]).
+-export([notify/1]).
+-export([init/1, handle_event/2]).
+
+start_link(Options) ->
+ case gen_event:start_link(?SERVER, Options) of
+ Ok = {ok, _} ->
+ ok = add_handler(?MODULE, undefined),
+ Ok;
+ Error ->
+ Error
+ end.
+
+add_handler(Handler, Args) ->
+ gen_event:add_handler(?MODULE, Handler, Args).
+
+notify(Event) ->
+ gen_event:notify(?MODULE, Event).
+
+%% gen_event handler
+
+init(_Args) ->
+ {ok, undefined}.
+
+handle_event(Event, State) ->
+ ?LOG_NOTICE(#{event => Event}),
+ {ok, State}.
+