summaryrefslogtreecommitdiff
path: root/src/mod_bosh.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2018-01-23 10:54:52 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2018-01-23 10:54:52 +0300
commitba2b650464bd3aae2b6b0f3a3177476360cb6d08 (patch)
tree5d55501f76edcdcfe145ba0c3367a54ea0314e5c /src/mod_bosh.erl
parentDo not try to start ezlib application too frequently (diff)
Introduce new gen_mod callback: mod_options/1
The callback is supposed to provide known options and their default values, as long as the documentation. Passing default values into get_mod functions is now deprecated: all defaults should be provided by the Mod:mod_options/1 callback.
Diffstat (limited to 'src/mod_bosh.erl')
-rw-r--r--src/mod_bosh.erl39
1 files changed, 20 insertions, 19 deletions
diff --git a/src/mod_bosh.erl b/src/mod_bosh.erl
index 913e1964..face1692 100644
--- a/src/mod_bosh.erl
+++ b/src/mod_bosh.erl
@@ -36,7 +36,7 @@
-export([start/2, stop/1, reload/3, process/2, open_session/2,
close_session/1, find_session/1, clean_cache/1]).
--export([depends/2, mod_opt_type/1]).
+-export([depends/2, mod_opt_type/1, mod_options/1]).
-include("ejabberd.hrl").
-include("logger.hrl").
@@ -144,7 +144,7 @@ reload(_Host, NewOpts, _OldOpts) ->
%%% Internal functions
%%%===================================================================
start_jiffy(Opts) ->
- case gen_mod:get_opt(json, Opts, false) of
+ case gen_mod:get_opt(json, Opts) of
false ->
ok;
true ->
@@ -194,10 +194,20 @@ mod_opt_type(O) when O == cache_size; O == cache_life_time ->
fun(I) when is_integer(I), I>0 -> I;
(unlimited) -> infinity;
(infinity) -> infinity
- end;
-mod_opt_type(_) ->
- [json, max_concat, max_inactivity, max_pause, prebind, ram_db_type,
- queue_type, use_cache, cache_size, cache_missed, cache_life_time].
+ end.
+
+mod_options(Host) ->
+ [{json, false},
+ {max_concat, unlimited},
+ {max_inactivity, 30},
+ {max_pause, 120},
+ {prebind, false},
+ {ram_db_type, ejabberd_config:default_ram_db(Host, ?MODULE)},
+ {queue_type, ejabberd_config:default_queue_type(Host)},
+ {use_cache, ejabberd_config:use_cache(Host)},
+ {cache_size, ejabberd_config:cache_size(Host)},
+ {cache_missed, ejabberd_config:cache_missed(Host)},
+ {cache_life_time, ejabberd_config:cache_life_time(Host)}].
%%%----------------------------------------------------------------------
%%% Cache stuff
@@ -215,10 +225,7 @@ init_cache(Mod) ->
use_cache(Mod) ->
case erlang:function_exported(Mod, use_cache, 0) of
true -> Mod:use_cache();
- false ->
- gen_mod:get_module_opt(
- global, ?MODULE, use_cache,
- ejabberd_config:use_cache(global))
+ false -> gen_mod:get_module_opt(global, ?MODULE, use_cache)
end.
-spec cache_nodes(module()) -> [node()].
@@ -239,15 +246,9 @@ delete_cache(Mod, SID) ->
-spec cache_opts() -> [proplists:property()].
cache_opts() ->
- MaxSize = gen_mod:get_module_opt(
- global, ?MODULE, cache_size,
- ejabberd_config:cache_size(global)),
- CacheMissed = gen_mod:get_module_opt(
- global, ?MODULE, cache_missed,
- ejabberd_config:cache_missed(global)),
- LifeTime = case gen_mod:get_module_opt(
- global, ?MODULE, cache_life_time,
- ejabberd_config:cache_life_time(global)) of
+ MaxSize = gen_mod:get_module_opt(global, ?MODULE, cache_size),
+ CacheMissed = gen_mod:get_module_opt(global, ?MODULE, cache_missed),
+ LifeTime = case gen_mod:get_module_opt(global, ?MODULE, cache_life_time) of
infinity -> infinity;
I -> timer:seconds(I)
end,