./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([default_opts/0]).
7 -export([stop/2]).
8
9 %% --------------------------------------------------------------
10 %% mongoose_wpool callbacks
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 start(HostType, Tag, WpoolOpts, RdbmsOpts) ->
26
:-(
try do_start(HostType, Tag, WpoolOpts, RdbmsOpts)
27 catch
28
:-(
Err -> {error, Err}
29 end.
30
31 default_opts() ->
32
:-(
[{call_timeout, 60000}].
33
34 stop(_, _) ->
35
:-(
ok.
36
37 %% --------------------------------------------------------------
38 %% Helper functions
39 do_start(HostType, Tag, WpoolOpts0, RdbmsOpts) when is_list(WpoolOpts0) and is_list(RdbmsOpts) ->
40
:-(
BackendName = backend_name(RdbmsOpts),
41
:-(
BackendOpts = RdbmsOpts ++ [{backend, BackendName}],
42
:-(
mongoose_backend:init(global, mongoose_rdbms, [query, execute], BackendOpts),
43
44
:-(
mongoose_metrics:ensure_db_pool_metric({rdbms, HostType, Tag}),
45
:-(
WpoolOpts = make_wpool_opts(WpoolOpts0, RdbmsOpts),
46
:-(
ProcName = mongoose_wpool:make_pool_name(rdbms, HostType, Tag),
47
:-(
mongoose_wpool:start_sup_pool(rdbms, ProcName, WpoolOpts).
48
49 make_wpool_opts(WpoolOpts0, RdbmsOpts) ->
50
:-(
Worker = {mongoose_rdbms, RdbmsOpts},
51
:-(
[{worker, Worker}, {pool_sup_shutdown, infinity} | WpoolOpts0].
52
53 -spec backend_name(proplist:proplists()) -> odbc | pgsql | mysql.
54 backend_name(RdbmsOpts) ->
55
:-(
case lists:keyfind(server, 1, RdbmsOpts) of
56
:-(
{_, ConnStr} when is_list(ConnStr) -> odbc;
57
:-(
{_, Tuple} when is_tuple(Tuple) -> element(1, Tuple)
58 end.
Line Hits Source