Skip to content

Commit

Permalink
Patch ejabberd_sm_cets to work with new SM API
Browse files Browse the repository at this point in the history
arcusfelis committed May 16, 2023
1 parent 09d95f0 commit 588f4c4
Showing 1 changed file with 8 additions and 24 deletions.
32 changes: 8 additions & 24 deletions src/ejabberd_sm_cets.erl
Original file line number Diff line number Diff line change
@@ -10,8 +10,7 @@
get_sessions/1,
get_sessions/2,
get_sessions/3,
create_session/4,
update_session/4,
set_session/4,
delete_session/4,
cleanup/1,
total_count/0,
@@ -57,29 +56,14 @@ get_sessions(User, Server, Resource) ->
%% We can detect duplicates on the merging step or on reading (or both).
tuples_to_sessions(Xs).

-spec create_session(User :: jid:luser(),
Server :: jid:lserver(),
Resource :: jid:lresource(),
Session :: ejabberd_sm:session()) -> ok | {error, term()}.
create_session(User, Server, Resource, Session) ->
case get_sessions(User, Server, Resource) of
[] ->
cets:insert(?TABLE, session_to_tuple(Session));
Sessions when is_list(Sessions) ->
%% TODO merge_info function would be removed, once MIM-1875 is done
MergedSession = mongoose_session:merge_info
(Session, hd(lists:sort(Sessions))),
cets:insert(?TABLE, session_to_tuple(MergedSession))
end.

-spec update_session(User :: jid:luser(),
Server :: jid:lserver(),
Resource :: jid:lresource(),
Session :: ejabberd_sm:session()) -> ok | {error, term()}.
update_session(_User, _Server, _Resource, Session) ->
-spec set_session(User :: jid:luser(),
Server :: jid:lserver(),
Resource :: jid:lresource(),
Session :: ejabberd_sm:session()) -> ok | {error, term()}.
set_session(_User, _Server, _Resource, Session) ->
cets:insert(?TABLE, session_to_tuple(Session)).

-spec delete_session(ejabberd_sm:sid(),
-spec delete_session(SID :: ejabberd_sm:sid(),
User :: jid:luser(),
Server :: jid:lserver(),
Resource :: jid:lresource()) -> ok.
@@ -95,7 +79,7 @@ cleanup(Node) ->
cets:sync(?TABLE),
%% This is a full table scan, but cleanup is rare.
Tuples = ets:select(?TABLE, [{R, [Guard], ['$_']}]),
lists:foreach(fun({Key, _, _} = Tuple) ->
lists:foreach(fun({_Key, _, _} = Tuple) ->
Session = tuple_to_session(Tuple),
ejabberd_sm:run_session_cleanup_hook(Session)
end, Tuples),

0 comments on commit 588f4c4

Please sign in to comment.