1 |
|
-module(mongoose_session). |
2 |
|
|
3 |
|
-export([merge_info/2]). |
4 |
|
-export([get_info/1]). |
5 |
|
-export([get_info/3]). |
6 |
|
-export([set_info/3]). |
7 |
|
-export([get_resource/1]). |
8 |
|
|
9 |
|
-ignore_xref([get_info/1, set_info/3]). |
10 |
|
|
11 |
|
-include("session.hrl"). |
12 |
|
|
13 |
|
-spec merge_info(ejabberd_sm:session(), ejabberd_sm:session()) -> ejabberd_sm:session(). |
14 |
|
merge_info(New = #session{info = NewInfo}, #session{info = OldInfo}) -> |
15 |
2659 |
New#session{info = maps:merge(OldInfo, NewInfo)}. |
16 |
|
|
17 |
|
-spec get_info(ejabberd_sm:session()) -> ejabberd_sm:info(). |
18 |
|
get_info(#session{info = Info}) -> |
19 |
:-( |
Info. |
20 |
|
|
21 |
|
-spec get_info(ejabberd_sm:session(), ejabberd_sm:info_key(), any()) -> any(). |
22 |
|
get_info(#session{info = Info}, Key, Default) -> |
23 |
3354 |
case maps:is_key(Key, Info) of |
24 |
123 |
true -> {Key, maps:get(Key, Info)}; |
25 |
3231 |
false -> Default |
26 |
|
end. |
27 |
|
|
28 |
|
-spec set_info(ejabberd_sm:session(), ejabberd_sm:info_key(), any()) -> ejabberd_sm:session(). |
29 |
|
set_info(#session{info = Info} = Session, Key, Value) -> |
30 |
:-( |
Session#session{info = maps:put(Key, Value, Info)}. |
31 |
|
|
32 |
|
-spec get_resource(ejabberd_sm:session()) -> jid:lresource(). |
33 |
|
get_resource(#session{usr = {_U, _S, R}}) -> |
34 |
10 |
R. |