aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_commands.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-02-26 15:10:59 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-02-26 15:10:59 +0300
commitfadcc85553e2fa00c26233e36c0808f5d0089876 (patch)
treea1748f4fb465da1ec2a97c45517e731efec34894 /src/ejabberd_commands.erl
parentDon't fail on elements decoding (diff)
Put more stuff under supervision
Diffstat (limited to '')
-rw-r--r--src/ejabberd_commands.erl34
1 files changed, 31 insertions, 3 deletions
diff --git a/src/ejabberd_commands.erl b/src/ejabberd_commands.erl
index f56cfc146..d84a671d5 100644
--- a/src/ejabberd_commands.erl
+++ b/src/ejabberd_commands.erl
@@ -210,9 +210,11 @@
-module(ejabberd_commands).
-author('badlop@process-one.net').
+-behaviour(gen_server).
+
-define(DEFAULT_VERSION, 1000000).
--export([init/0,
+-export([start_link/0,
list_commands/0,
list_commands/1,
get_command_format/1,
@@ -238,6 +240,9 @@
get_commands_definition/1,
execute_command2/3,
execute_command2/4]).
+%% gen_server callbacks
+-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
+ terminate/2, code_change/3]).
-include("ejabberd_commands.hrl").
-include("ejabberd.hrl").
@@ -246,6 +251,8 @@
-define(POLICY_ACCESS, '$policy').
+-record(state, {}).
+
get_commands_spec() ->
[
#ejabberd_commands{name = gen_html_doc_for_commands, tags = [documentation],
@@ -276,7 +283,11 @@ get_commands_spec() ->
result_desc = "0 if command failed, 1 when succedded",
args_example = ["/home/me/docs/api.html", "mod_admin", "java,json"],
result_example = ok}].
-init() ->
+
+start_link() ->
+ gen_server:start_link({local, ?MODULE}, ?MODULE, [], []).
+
+init([]) ->
try mnesia:transform_table(ejabberd_commands, ignore,
record_info(fields, ejabberd_commands))
catch exit:{aborted, {no_exists, _}} -> ok
@@ -288,7 +299,24 @@ init() ->
{type, bag}]),
mnesia:add_table_copy(ejabberd_commands, node(), ram_copies),
register_commands(get_commands_spec()),
- ejabberd_access_permissions:register_permission_addon(?MODULE, fun permission_addon/0).
+ ejabberd_access_permissions:register_permission_addon(?MODULE, fun permission_addon/0),
+ {ok, #state{}}.
+
+handle_call(_Request, _From, State) ->
+ Reply = ok,
+ {reply, Reply, State}.
+
+handle_cast(_Msg, State) ->
+ {noreply, State}.
+
+handle_info(_Info, State) ->
+ {noreply, State}.
+
+terminate(_Reason, _State) ->
+ ok.
+
+code_change(_OldVsn, State, _Extra) ->
+ {ok, State}.
-spec register_commands([ejabberd_commands()]) -> ok.