summaryrefslogtreecommitdiff
path: root/src/ejabberd_config.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-01-11 16:25:43 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-01-11 16:25:43 +0300
commit02f96d0f41e86b531622cda15cfcf8d52040bd7b (patch)
tree783f54bbe269faaeb9aff5badd868b46b8ca0376 /src/ejabberd_config.erl
parentFix attaching ejabberd_s2s_out process to a supervisor (diff)
Implement database backend interface for ejabberd_router
Diffstat (limited to 'src/ejabberd_config.erl')
-rw-r--r--src/ejabberd_config.erl37
1 files changed, 29 insertions, 8 deletions
diff --git a/src/ejabberd_config.erl b/src/ejabberd_config.erl
index 9014bfab..f9df31bf 100644
--- a/src/ejabberd_config.erl
+++ b/src/ejabberd_config.erl
@@ -35,10 +35,11 @@
get_version/0, get_myhosts/0, get_mylang/0,
get_ejabberd_config_path/0, is_using_elixir_config/0,
prepare_opt_val/4, convert_table_to_binary/5,
- transform_options/1, collect_options/1, default_db/2,
+ transform_options/1, collect_options/1,
convert_to_yaml/1, convert_to_yaml/2, v_db/2,
env_binary_to_list/2, opt_type/1, may_hide_data/1,
is_elixir_enabled/0, v_dbs/1, v_dbs_mods/1,
+ default_db/1, default_db/2, default_ram_db/1, default_ram_db/2,
fsm_limit_opts/1]).
-export([start/2]).
@@ -857,8 +858,8 @@ get_option(Opt, F, Default) ->
case Opt of
{Key, Host} when Host /= global ->
get_option({Key, global}, F, Default);
- _ ->
- Default
+ _ ->
+ Default
end
end.
@@ -907,11 +908,26 @@ v_dbs_mods(Mod) ->
(atom_to_binary(M, utf8))/binary>>, utf8)
end, ets:match(module_db, {Mod, '$1'})).
--spec default_db(binary(), module()) -> atom().
+-spec default_db(module()) -> atom().
+default_db(Module) ->
+ default_db(global, Module).
+-spec default_db(binary(), module()) -> atom().
default_db(Host, Module) ->
+ default_db(default_db, Host, Module).
+
+-spec default_ram_db(module()) -> atom().
+default_ram_db(Module) ->
+ default_ram_db(global, Module).
+
+-spec default_ram_db(binary(), module()) -> atom().
+default_ram_db(Host, Module) ->
+ default_db(default_ram_db, Host, Module).
+
+-spec default_db(default_db | default_ram_db, binary(), module()) -> atom().
+default_db(Opt, Host, Module) ->
case ejabberd_config:get_option(
- {default_db, Host}, fun(T) when is_atom(T) -> T end) of
+ {Opt, Host}, fun(T) when is_atom(T) -> T end) of
undefined ->
mnesia;
DBType ->
@@ -919,8 +935,8 @@ default_db(Host, Module) ->
v_db(Module, DBType)
catch error:badarg ->
?WARNING_MSG("Module '~s' doesn't support database '~s' "
- "defined in option 'default_db', using "
- "'mnesia' as fallback", [Module, DBType]),
+ "defined in option '~s', using "
+ "'mnesia' as fallback", [Module, DBType, Opt]),
mnesia
end
end.
@@ -1406,8 +1422,13 @@ opt_type(language) ->
fun iolist_to_binary/1;
opt_type(max_fsm_queue) ->
fun (I) when is_integer(I), I > 0 -> I end;
+opt_type(default_db) ->
+ fun(T) when is_atom(T) -> T end;
+opt_type(default_ram_db) ->
+ fun(T) when is_atom(T) -> T end;
opt_type(_) ->
- [hide_sensitive_log_data, hosts, language].
+ [hide_sensitive_log_data, hosts, language,
+ default_db, default_ram_db].
-spec may_hide_data(string()) -> string();
(binary()) -> binary().