summaryrefslogtreecommitdiff
path: root/src/ejabberd_router_sql.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-04-14 13:57:52 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-04-14 13:57:52 +0300
commite40baf0bdaecf3206420fe8c16c33f2c166cb717 (patch)
tree75d9fe880e8257ea9fd20c095c252d7940cea89d /src/ejabberd_router_sql.erl
parentBump xmpp dependency, it's required by previous commit (diff)
Use cache in front of Redis/SQL RAM backends
Diffstat (limited to 'src/ejabberd_router_sql.erl')
-rw-r--r--src/ejabberd_router_sql.erl72
1 files changed, 19 insertions, 53 deletions
diff --git a/src/ejabberd_router_sql.erl b/src/ejabberd_router_sql.erl
index 0747d039..b354eb21 100644
--- a/src/ejabberd_router_sql.erl
+++ b/src/ejabberd_router_sql.erl
@@ -27,8 +27,7 @@
%% API
-export([init/0, register_route/5, unregister_route/3, find_routes/1,
- host_of_route/1, is_my_route/1, is_my_host/1, get_all_routes/0,
- find_routes/0]).
+ get_all_routes/0]).
-include("ejabberd.hrl").
-include("logger.hrl").
@@ -64,80 +63,47 @@ register_route(Domain, ServerHost, LocalHint, _, Pid) ->
ok;
Err ->
?ERROR_MSG("failed to update 'route' table: ~p", [Err]),
- {error, Err}
+ {error, db_failure}
end.
unregister_route(Domain, _, Pid) ->
PidS = misc:encode_pid(Pid),
Node = erlang:atom_to_binary(node(Pid), latin1),
- ejabberd_sql:sql_query(
- ?MYNAME,
- ?SQL("delete from route where domain=%(Domain)s "
- "and pid=%(PidS)s and node=%(Node)s")),
- %% TODO: return meaningful error
- ok.
-
-find_routes(Domain) ->
case ejabberd_sql:sql_query(
?MYNAME,
- ?SQL("select @(server_host)s, @(node)s, @(pid)s, @(local_hint)s "
- "from route where domain=%(Domain)s")) of
- {selected, Rows} ->
- lists:flatmap(
- fun(Row) ->
- row_to_route(Domain, Row)
- end, Rows);
+ ?SQL("delete from route where domain=%(Domain)s "
+ "and pid=%(PidS)s and node=%(Node)s")) of
+ {updated, _} ->
+ ok;
Err ->
- ?ERROR_MSG("failed to select from 'route' table: ~p", [Err]),
- {error, Err}
+ ?ERROR_MSG("failed to delete from 'route' table: ~p", [Err]),
+ {error, db_failure}
end.
-host_of_route(Domain) ->
+find_routes(Domain) ->
case ejabberd_sql:sql_query(
?MYNAME,
- ?SQL("select @(server_host)s from route where domain=%(Domain)s")) of
- {selected, [{ServerHost}|_]} ->
- {ok, ServerHost};
- {selected, []} ->
- error;
+ ?SQL("select @(server_host)s, @(node)s, @(pid)s, @(local_hint)s "
+ "from route where domain=%(Domain)s")) of
+ {selected, Rows} ->
+ {ok, lists:flatmap(
+ fun(Row) ->
+ row_to_route(Domain, Row)
+ end, Rows)};
Err ->
?ERROR_MSG("failed to select from 'route' table: ~p", [Err]),
- error
+ {error, db_failure}
end.
-is_my_route(Domain) ->
- case host_of_route(Domain) of
- {ok, _} -> true;
- _ -> false
- end.
-
-is_my_host(Domain) ->
- {ok, Domain} == host_of_route(Domain).
-
get_all_routes() ->
case ejabberd_sql:sql_query(
?MYNAME,
?SQL("select @(domain)s from route where domain <> server_host")) of
{selected, Domains} ->
- [Domain || {Domain} <- Domains];
- Err ->
- ?ERROR_MSG("failed to select from 'route' table: ~p", [Err]),
- []
- end.
-
-find_routes() ->
- case ejabberd_sql:sql_query(
- ?MYNAME,
- ?SQL("select @(domain)s, @(server_host)s, @(node)s, @(pid)s, "
- "@(local_hint)s from route")) of
- {selected, Rows} ->
- lists:flatmap(
- fun({Domain, ServerHost, Node, Pid, LocalHint}) ->
- row_to_route(Domain, {ServerHost, Node, Pid, LocalHint})
- end, Rows);
+ {ok, [Domain || {Domain} <- Domains]};
Err ->
?ERROR_MSG("failed to select from 'route' table: ~p", [Err]),
- []
+ {error, db_failure}
end.
%%%===================================================================