./ct_report/coverage/mongoose_router.COVER.html

1 -module(mongoose_router).
2
3 -define(TABLE, ?MODULE).
4
5 -export([start/0, default_routing_modules/0]).
6
7 -export([get_all_domains/0, lookup_route/1, is_registered_route/1,
8 register_route/2, unregister_route/1]).
9
10 -spec get_all_domains() -> [jid:lserver()].
11 get_all_domains() ->
12 39 ets:select(?TABLE, [{{'$1', '_'}, [], ['$1']}]).
13
14 -spec lookup_route(jid:lserver()) -> no_route | mongoose_packet_handler:t().
15 lookup_route(LDomain) ->
16 19314 case ets:lookup(?TABLE, LDomain) of
17 281 [] -> no_route;
18 [{_, Handler}] ->
19 19033 Handler
20 end.
21
22 -spec register_route(jid:server(), mongoose_packet_handler:t()) -> any().
23 register_route(Domain, Handler) ->
24 139 case jid:nameprep(Domain) of
25 error ->
26
:-(
{error, invalid_domain, Domain};
27 LDomain ->
28 139 ets:insert(?TABLE, {LDomain, Handler}),
29 139 mongoose_hooks:register_subhost(LDomain, false)
30 end.
31
32 -spec unregister_route(jid:server()) -> any().
33 unregister_route(Domain) ->
34 122 case jid:nameprep(Domain) of
35 error ->
36
:-(
{error, invalid_domain, Domain};
37 LDomain ->
38 122 ets:delete(?TABLE, LDomain),
39 122 mongoose_hooks:unregister_subhost(LDomain)
40 end.
41
42 -spec is_registered_route(jid:lserver()) -> boolean().
43 is_registered_route(LDomain) ->
44 29 ets:member(?TABLE, LDomain).
45
46 %% start/stop
47 start() ->
48 80 ets:new(?TABLE, [named_table, public, set, {read_concurrency, true}]),
49 80 mongoose_metrics:ensure_metric(global, routingErrors, spiral).
50
51 default_routing_modules() ->
52 80 [mongoose_router_global,
53 mongoose_router_localdomain,
54 mongoose_router_external_localnode,
55 mongoose_router_external,
56 mongoose_router_dynamic_domains,
57 ejabberd_s2s].
Line Hits Source