Update gen_mod.erl to ejabberd master
This commit is contained in:
parent
a5ae331263
commit
4f1aa9a0a4
|
@ -39,6 +39,7 @@
|
||||||
%%-export([behaviour_info/1]).
|
%%-export([behaviour_info/1]).
|
||||||
|
|
||||||
-include("ejabberd.hrl").
|
-include("ejabberd.hrl").
|
||||||
|
-include("logger.hrl").
|
||||||
|
|
||||||
-record(ejabberd_module,
|
-record(ejabberd_module,
|
||||||
{module_host = {undefined, <<"">>} :: {atom(), binary()},
|
{module_host = {undefined, <<"">>} :: {atom(), binary()},
|
||||||
|
@ -63,13 +64,11 @@ start() ->
|
||||||
-spec start_module(binary(), atom(), opts()) -> any().
|
-spec start_module(binary(), atom(), opts()) -> any().
|
||||||
|
|
||||||
start_module(Host, Module, Opts) ->
|
start_module(Host, Module, Opts) ->
|
||||||
set_module_opts_mnesia(Host, Module, Opts),
|
|
||||||
ets:insert(ejabberd_modules,
|
ets:insert(ejabberd_modules,
|
||||||
#ejabberd_module{module_host = {Module, Host},
|
#ejabberd_module{module_host = {Module, Host},
|
||||||
opts = Opts}),
|
opts = Opts}),
|
||||||
try Module:start(Host, Opts) catch
|
try Module:start(Host, Opts) catch
|
||||||
Class:Reason ->
|
Class:Reason ->
|
||||||
del_module_mnesia(Host, Module),
|
|
||||||
ets:delete(ejabberd_modules, {Module, Host}),
|
ets:delete(ejabberd_modules, {Module, Host}),
|
||||||
ErrorText =
|
ErrorText =
|
||||||
io_lib:format("Problem starting the module ~p for host "
|
io_lib:format("Problem starting the module ~p for host "
|
||||||
|
@ -100,7 +99,7 @@ is_app_running(AppName) ->
|
||||||
stop_module(Host, Module) ->
|
stop_module(Host, Module) ->
|
||||||
case stop_module_keep_config(Host, Module) of
|
case stop_module_keep_config(Host, Module) of
|
||||||
error -> error;
|
error -> error;
|
||||||
ok -> del_module_mnesia(Host, Module)
|
ok -> ok
|
||||||
end.
|
end.
|
||||||
|
|
||||||
%% @doc Stop the module in a host, but keep its configuration.
|
%% @doc Stop the module in a host, but keep its configuration.
|
||||||
|
@ -231,25 +230,6 @@ loaded_modules_with_opts(Host) ->
|
||||||
opts = '$2'},
|
opts = '$2'},
|
||||||
[], [{{'$1', '$2'}}]}]).
|
[], [{{'$1', '$2'}}]}]).
|
||||||
|
|
||||||
set_module_opts_mnesia(Host, Module, Opts) ->
|
|
||||||
Modules = ejabberd_config:get_local_option(
|
|
||||||
{modules, Host},
|
|
||||||
fun(Ls) when is_list(Ls) -> Ls end,
|
|
||||||
[]),
|
|
||||||
Modules1 = lists:keydelete(Module, 1, Modules),
|
|
||||||
Modules2 = [{Module, Opts} | Modules1],
|
|
||||||
ejabberd_config:add_local_option({modules, Host},
|
|
||||||
Modules2).
|
|
||||||
|
|
||||||
del_module_mnesia(Host, Module) ->
|
|
||||||
Modules = ejabberd_config:get_local_option(
|
|
||||||
{modules, Host},
|
|
||||||
fun(Ls) when is_list(Ls) -> Ls end,
|
|
||||||
[]),
|
|
||||||
Modules1 = lists:keydelete(Module, 1, Modules),
|
|
||||||
ejabberd_config:add_local_option({modules, Host},
|
|
||||||
Modules1).
|
|
||||||
|
|
||||||
-spec get_hosts(opts(), binary()) -> [binary()].
|
-spec get_hosts(opts(), binary()) -> [binary()].
|
||||||
|
|
||||||
get_hosts(Opts, Prefix) ->
|
get_hosts(Opts, Prefix) ->
|
||||||
|
|
Loading…
Reference in New Issue