aboutsummaryrefslogtreecommitdiff
path: root/src/mod_caps.erl
diff options
context:
space:
mode:
authorChristophe Romain <christophe.romain@process-one.net>2016-11-22 14:48:01 +0100
committerChristophe Romain <christophe.romain@process-one.net>2016-11-22 14:48:01 +0100
commitfbfbb968727617ae9bbeedc9b3d4adb7636ad5da (patch)
treee48dafe80850fe41be32a3ab47f27e6e130b832b /src/mod_caps.erl
parentAdd new xmpp repo as dependency in mix.exs (diff)
Improve ODBC import
Diffstat (limited to 'src/mod_caps.erl')
-rw-r--r--src/mod_caps.erl31
1 files changed, 4 insertions, 27 deletions
diff --git a/src/mod_caps.erl b/src/mod_caps.erl
index 65a745d2d..3a4492f5c 100644
--- a/src/mod_caps.erl
+++ b/src/mod_caps.erl
@@ -55,20 +55,16 @@
-include("logger.hrl").
-include("xmpp.hrl").
+-include("mod_caps.hrl").
-define(PROCNAME, ejabberd_mod_caps).
-define(BAD_HASH_LIFETIME, 600).
--record(caps_features,
-{
- node_pair = {<<"">>, <<"">>} :: {binary(), binary()},
- features = [] :: [binary()] | pos_integer()
-}).
-
-record(state, {host = <<"">> :: binary()}).
-callback init(binary(), gen_mod:opts()) -> any().
+-callback import(binary(), {binary(), binary()}, [binary() | pos_integer()]) -> ok.
-callback caps_read(binary(), {binary(), binary()}) ->
{ok, non_neg_integer() | [binary()]} | error.
-callback caps_write(binary(), {binary(), binary()},
@@ -525,9 +521,6 @@ is_valid_node(Node) ->
false
end.
-caps_features_schema() ->
- {record_info(fields, caps_features), #caps_features{}}.
-
export(LServer) ->
Mod = gen_mod:db_mod(LServer, ?MODULE),
Mod:export(LServer).
@@ -559,24 +552,8 @@ import_next(_LServer, _DBType, '$end_of_table') ->
ok;
import_next(LServer, DBType, NodePair) ->
Features = [F || {_, F} <- ets:lookup(caps_features_tmp, NodePair)],
- case Features of
- [I] when is_integer(I), DBType == mnesia ->
- mnesia:dirty_write(
- #caps_features{node_pair = NodePair, features = I});
- [I] when is_integer(I), DBType == riak ->
- ejabberd_riak:put(
- #caps_features{node_pair = NodePair, features = I},
- caps_features_schema());
- _ when DBType == mnesia ->
- mnesia:dirty_write(
- #caps_features{node_pair = NodePair, features = Features});
- _ when DBType == riak ->
- ejabberd_riak:put(
- #caps_features{node_pair = NodePair, features = Features},
- caps_features_schema());
- _ when DBType == sql ->
- ok
- end,
+ Mod = gen_mod:db_mod(DBType, ?MODULE),
+ Mod:import(LServer, NodePair, Features),
import_next(LServer, DBType, ets:next(caps_features_tmp, NodePair)).
mod_opt_type(cache_life_time) ->