emqttd:run_hooks/2, emqttd_hook:run/2
This commit is contained in:
parent
c5bb1e031e
commit
66ca65733a
|
@ -33,7 +33,7 @@
|
|||
is_subscribed/2, subscriber_down/1]).
|
||||
|
||||
%% Hooks API
|
||||
-export([hook/4, hook/3, unhook/2, run_hooks/3]).
|
||||
-export([hook/4, hook/3, unhook/2, run_hooks/2, run_hooks/3]).
|
||||
|
||||
%% Debug API
|
||||
-export([dump/0]).
|
||||
|
@ -151,6 +151,10 @@ hook(Hook, Function, InitArgs, Priority) ->
|
|||
unhook(Hook, Function) ->
|
||||
emqttd_hook:delete(Hook, Function).
|
||||
|
||||
-spec(run_hooks(atom(), list(any())) -> ok | stop).
|
||||
run_hooks(Hook, Args) ->
|
||||
emqttd_hook:run(Hook, Args).
|
||||
|
||||
-spec(run_hooks(atom(), list(any()), any()) -> {ok | stop, any()}).
|
||||
run_hooks(Hook, Args, Acc) ->
|
||||
emqttd_hook:run(Hook, Args, Acc).
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
-export([start_link/0]).
|
||||
|
||||
%% Hooks API
|
||||
-export([add/3, add/4, delete/2, run/3, lookup/1]).
|
||||
-export([add/3, add/4, delete/2, run/2, run/3, lookup/1]).
|
||||
|
||||
%% gen_server Function Exports
|
||||
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
|
||||
|
@ -63,10 +63,26 @@ add(HookPoint, Function, InitArgs, Priority) ->
|
|||
delete(HookPoint, Function) ->
|
||||
gen_server:call(?MODULE, {delete, HookPoint, Function}).
|
||||
|
||||
-spec(run(atom(), list(any()), any()) -> any()).
|
||||
%% @doc Run hooks without Acc.
|
||||
-spec(run(atom(), list(Arg :: any())) -> ok | stop).
|
||||
run(HookPoint, Args) ->
|
||||
run_(lookup(HookPoint), Args).
|
||||
|
||||
-spec(run(atom(), list(Arg :: any()), any()) -> any()).
|
||||
run(HookPoint, Args, Acc) ->
|
||||
run_(lookup(HookPoint), Args, Acc).
|
||||
|
||||
%% @private
|
||||
run_([#callback{function = Fun, init_args = InitArgs} | Callbacks], Args) ->
|
||||
case apply(Fun, lists:append([Args, InitArgs])) of
|
||||
ok -> run_(Callbacks, Args);
|
||||
stop -> stop;
|
||||
_Any -> run_(Callbacks, Args)
|
||||
end;
|
||||
|
||||
run_([], _Args) ->
|
||||
ok.
|
||||
|
||||
%% @private
|
||||
run_([#callback{function = Fun, init_args = InitArgs} | Callbacks], Args, Acc) ->
|
||||
case apply(Fun, lists:append([Args, [Acc], InitArgs])) of
|
||||
|
|
Loading…
Reference in New Issue