./ct_report/coverage/mongoose_wpool_rdbms.COVER.html

1 -module(mongoose_wpool_rdbms).
2 -behaviour(mongoose_wpool).
3
4 -export([init/0]).
5 -export([start/4]).
6 -export([stop/2]).
7
8 %% --------------------------------------------------------------
9 %% mongoose_wpool callbacks
10 -spec init() -> ok.
11 init() ->
12
:-(
case ets:info(prepared_statements) of
13 undefined ->
14
:-(
Heir = case whereis(ejabberd_sup) of
15
:-(
undefined -> [];
16
:-(
Pid -> [{heir, Pid, undefined}]
17 end,
18
:-(
ets:new(prepared_statements,
19 [named_table, public, {read_concurrency, true} | Heir]),
20
:-(
ok;
21 _ ->
22
:-(
ok
23 end.
24
25 -spec start(mongooseim:host_type_or_global(), mongoose_wpool:tag(),
26 mongoose_wpool:pool_opts(), mongoose_wpool:conn_opts()) -> {ok, pid()} | {error, any()}.
27 start(HostType, Tag, WpoolOpts, RdbmsOpts) ->
28
:-(
try do_start(HostType, Tag, WpoolOpts, RdbmsOpts)
29 catch
30
:-(
Err -> {error, Err}
31 end.
32
33 -spec stop(mongooseim:host_type_or_global(), mongoose_wpool:tag()) -> ok.
34 stop(_, _) ->
35
:-(
ok.
36
37 %% --------------------------------------------------------------
38 %% Helper functions
39 do_start(HostType, Tag, WpoolOpts0, RdbmsOpts) when is_list(WpoolOpts0) and is_map(RdbmsOpts) ->
40
:-(
#{driver := BackendName} = RdbmsOpts,
41
:-(
mongoose_backend:init(global, mongoose_rdbms, [query, execute], #{backend => BackendName}),
42
:-(
mongoose_metrics:ensure_db_pool_metric({rdbms, HostType, Tag}),
43
:-(
WpoolOpts = make_wpool_opts(WpoolOpts0, RdbmsOpts),
44
:-(
ProcName = mongoose_wpool:make_pool_name(rdbms, HostType, Tag),
45
:-(
mongoose_wpool:start_sup_pool(rdbms, ProcName, WpoolOpts).
46
47 make_wpool_opts(WpoolOpts0, RdbmsOpts) ->
48
:-(
Worker = {mongoose_rdbms, RdbmsOpts},
49
:-(
[{worker, Worker}, {pool_sup_shutdown, infinity} | WpoolOpts0].
Line Hits Source