chore(session): add obtain_next_pkt_id/1

In the current implement, mqtt-sn gateway is using the emqx_session as
its session structure. We need a method to get a pkt_id for sending like
REGISTER related messages
This commit is contained in:
JianBo He 2022-03-02 14:53:59 +08:00
parent ddf3585b22
commit 5b1ba335cb
2 changed files with 12 additions and 1 deletions

View File

@ -60,6 +60,7 @@
, info/2 , info/2
, is_session/1 , is_session/1
, stats/1 , stats/1
, obtain_next_pkt_id/1
]). ]).
-export([ subscribe/4 -export([ subscribe/4
@ -746,6 +747,10 @@ inc_pd(Key, Inc) ->
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
%% Next Packet Id %% Next Packet Id
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
obtain_next_pkt_id(Session) ->
{Session#session.next_pkt_id, next_pkt_id(Session)}.
next_pkt_id(Session = #session{next_pkt_id = ?MAX_PACKET_ID}) -> next_pkt_id(Session = #session{next_pkt_id = ?MAX_PACKET_ID}) ->
Session#session{next_pkt_id = 1}; Session#session{next_pkt_id = 1};

View File

@ -378,7 +378,13 @@ t_next_pakt_id(_) ->
Session2 = emqx_session:next_pkt_id(Session1), Session2 = emqx_session:next_pkt_id(Session1),
?assertEqual(2, emqx_session:info(next_pkt_id, Session2)). ?assertEqual(2, emqx_session:info(next_pkt_id, Session2)).
%%-------------------------------------------------------------------- t_obtain_next_pkt_id(_) ->
Session = session(#{next_pkt_id => 16#FFFF}),
{16#FFFF, Session1} = emqx_session:obtain_next_pkt_id(Session),
?assertEqual(1, emqx_session:info(next_pkt_id, Session1)),
{1, Session2} = emqx_session:obtain_next_pkt_id(Session1),
?assertEqual(2, emqx_session:info(next_pkt_id, Session2)).
%% Helper functions %% Helper functions
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------