1 |
|
%% Generic module to access SM backend modules |
2 |
|
-module(ejabberd_sm_backend). |
3 |
|
|
4 |
|
-callback init(list()) -> |
5 |
|
any(). |
6 |
|
-callback get_sessions() -> |
7 |
|
[ejabberd_sm:session()]. |
8 |
|
-callback get_sessions(jid:server()) -> |
9 |
|
[ejabberd_sm:session()]. |
10 |
|
-callback get_sessions(jid:user(), jid:server()) -> |
11 |
|
[ejabberd_sm:session()]. |
12 |
|
-callback get_sessions(jid:user(), jid:server(), jid:resource()) -> |
13 |
|
[ejabberd_sm:session()]. |
14 |
|
-callback create_session(jid:luser(), |
15 |
|
jid:lserver(), |
16 |
|
jid:lresource(), |
17 |
|
ejabberd_sm:session()) -> |
18 |
|
ok | {error, term()}. |
19 |
|
-callback update_session(jid:luser(), |
20 |
|
jid:lserver(), |
21 |
|
jid:lresource(), |
22 |
|
ejabberd_sm:session()) -> |
23 |
|
ok | {error, term()}. |
24 |
|
-callback delete_session(ejabberd_sm:sid(), |
25 |
|
jid:user(), |
26 |
|
jid:server(), |
27 |
|
jid:resource()) -> ok. |
28 |
|
-callback cleanup(Node :: atom()) -> any(). |
29 |
|
-callback total_count() -> integer(). |
30 |
|
-callback unique_count() -> integer(). |
31 |
|
|
32 |
|
-export([init/1, |
33 |
|
get_sessions/0, get_sessions/1, get_sessions/2, get_sessions/3, |
34 |
|
create_session/4, update_session/4, delete_session/4, cleanup/1, |
35 |
|
total_count/0, unique_count/0]). |
36 |
|
|
37 |
|
-ignore_xref([cleanup/1, behaviour_info/1]). |
38 |
|
|
39 |
|
-define(MAIN_MODULE, ejabberd_sm). |
40 |
|
|
41 |
|
-spec init(list()) -> any(). |
42 |
|
init(Opts) -> |
43 |
82 |
Args = [Opts], |
44 |
82 |
mongoose_backend:init(global, ?MAIN_MODULE, [], Opts), |
45 |
82 |
mongoose_backend:call(global, ?MAIN_MODULE, ?FUNCTION_NAME, Args). |
46 |
|
|
47 |
|
-spec get_sessions() -> [ejabberd_sm:sessions()]. |
48 |
|
get_sessions() -> |
49 |
86 |
mongoose_backend:call(global, ?MAIN_MODULE, ?FUNCTION_NAME, []). |
50 |
|
|
51 |
|
-spec get_sessions(jid:server()) -> [ejabberd_sm:sessions()]. |
52 |
|
get_sessions(Server) -> |
53 |
20 |
Args = [Server], |
54 |
20 |
mongoose_backend:call(global, ?MAIN_MODULE, ?FUNCTION_NAME, Args). |
55 |
|
|
56 |
|
-spec get_sessions(jid:user(), jid:server()) -> |
57 |
|
[ejabberd_sm:session()]. |
58 |
|
get_sessions(User, Server) -> |
59 |
19990 |
Args = [User, Server], |
60 |
19990 |
mongoose_backend:call(global, ?MAIN_MODULE, ?FUNCTION_NAME, Args). |
61 |
|
|
62 |
|
-spec get_sessions(jid:user(), |
63 |
|
jid:server(), |
64 |
|
jid:resource()) -> |
65 |
|
[ejabberd_sm:session()]. |
66 |
|
get_sessions(User, Server, Resource) -> |
67 |
19756 |
Args = [User, Server, Resource], |
68 |
19756 |
mongoose_backend:call(global, ?MAIN_MODULE, ?FUNCTION_NAME, Args). |
69 |
|
|
70 |
|
-spec create_session(User :: jid:user(), |
71 |
|
Server :: jid:server(), |
72 |
|
Resource :: jid:resource(), |
73 |
|
Session :: ejabberd_sm:session()) -> ok | {error, term()}. |
74 |
|
create_session(User, Server, Resource, Session) -> |
75 |
5474 |
Args = [User, Server, Resource, Session], |
76 |
5474 |
mongoose_backend:call(global, ?MAIN_MODULE, ?FUNCTION_NAME, Args). |
77 |
|
|
78 |
|
-spec update_session(User :: jid:luser(), |
79 |
|
Server :: jid:lserver(), |
80 |
|
Resource :: jid:lresource(), |
81 |
|
Session :: ejabberd_sm:session()) -> ok | {error, term()}. |
82 |
|
update_session(User, Server, Resource, Session) -> |
83 |
353 |
Args = [User, Server, Resource, Session], |
84 |
353 |
mongoose_backend:call(global, ?MAIN_MODULE, ?FUNCTION_NAME, Args). |
85 |
|
|
86 |
|
-spec delete_session(Sid :: ejabberd_sm:sid(), |
87 |
|
User :: jid:user(), |
88 |
|
Server :: jid:server(), |
89 |
|
Resource :: jid:resource()) -> ok. |
90 |
|
delete_session(Sid, User, Server, Resource) -> |
91 |
2714 |
Args = [Sid, User, Server, Resource], |
92 |
2714 |
mongoose_backend:call(global, ?MAIN_MODULE, ?FUNCTION_NAME, Args). |
93 |
|
|
94 |
|
-spec cleanup(Node :: atom()) -> any(). |
95 |
|
cleanup(Node) -> |
96 |
:-( |
Args = [Node], |
97 |
:-( |
mongoose_backend:call(global, ?MAIN_MODULE, ?FUNCTION_NAME, Args). |
98 |
|
|
99 |
|
-spec total_count() -> integer(). |
100 |
|
total_count() -> |
101 |
96 |
mongoose_backend:call(global, ?MAIN_MODULE, ?FUNCTION_NAME, []). |
102 |
|
|
103 |
|
-spec unique_count() -> integer(). |
104 |
|
unique_count() -> |
105 |
94 |
mongoose_backend:call(global, ?MAIN_MODULE, ?FUNCTION_NAME, []). |