Просмотр исходного кода

chore(coap): update the subscriptions_cnt stats in time

JianBo He 2 лет назад
Родитель
Сommit
6d2222318d

+ 4 - 4
apps/emqx_gateway_coap/src/emqx_coap_channel.erl

@@ -118,8 +118,8 @@ info(ctx, #channel{ctx = Ctx}) ->
     Ctx.
 
 -spec stats(channel()) -> emqx_types:stats().
-stats(_) ->
-    [].
+stats(#channel{session = Session}) ->
+    emqx_coap_session:stats(Session).
 
 -spec init(map(), map()) -> channel().
 init(
@@ -273,7 +273,7 @@ handle_call(
         SubReq, TempMsg, #{}, Session
     ),
     NSession = maps:get(session, Result),
-    {reply, {ok, {MountedTopic, NSubOpts}}, Channel#channel{session = NSession}};
+    {reply, {ok, {MountedTopic, NSubOpts}}, [{event, updated}], Channel#channel{session = NSession}};
 handle_call(
     {unsubscribe, Topic},
     _From,
@@ -300,7 +300,7 @@ handle_call(
         UnSubReq, TempMsg, #{}, Session
     ),
     NSession = maps:get(session, Result),
-    {reply, ok, Channel#channel{session = NSession}};
+    {reply, ok, [{event, updated}], Channel#channel{session = NSession}};
 handle_call(subscriptions, _From, Channel = #channel{session = Session}) ->
     Subs = emqx_coap_session:info(subscriptions, Session),
     {reply, {ok, maps:to_list(Subs)}, Channel};

+ 4 - 4
apps/emqx_gateway_coap/src/emqx_coap_session.erl

@@ -117,15 +117,15 @@ info(inflight, _) ->
 info(inflight_cnt, _) ->
     0;
 info(inflight_max, _) ->
-    0;
+    infinity;
 info(retry_interval, _) ->
     infinity;
 info(mqueue, _) ->
     emqx_mqueue:init(#{max_len => 0, store_qos0 => false});
-info(mqueue_len, #session{transport_manager = TM}) ->
-    maps:size(TM);
-info(mqueue_max, _) ->
+info(mqueue_len, _) ->
     0;
+info(mqueue_max, _) ->
+    infinity;
 info(mqueue_dropped, _) ->
     0;
 info(next_pkt_id, _) ->

+ 3 - 0
apps/emqx_gateway_coap/test/emqx_coap_SUITE.erl

@@ -363,6 +363,9 @@ t_clients_subscription_api(_) ->
             maps:get(topic, SubsResp2)
         ),
 
+        %% check subscription_cnt
+        {200, #{subscriptions_cnt := 1}} = request(get, "/gateways/coap/clients/client1"),
+
         {204, _} = request(delete, Path ++ "/tx"),
 
         {200, []} = request(get, Path)