chore(cm): sync emqx_cm with ee
This commit is contained in:
parent
ebd01da78b
commit
cc468dca4e
|
@ -63,8 +63,8 @@
|
||||||
]).
|
]).
|
||||||
|
|
||||||
-export([all_channels/0,
|
-export([all_channels/0,
|
||||||
channel_with_session_table/0,
|
channel_with_session_table/1,
|
||||||
live_connection_table/0]).
|
live_connection_table/1]).
|
||||||
|
|
||||||
%% gen_server callbacks
|
%% gen_server callbacks
|
||||||
-export([ init/1
|
-export([ init/1
|
||||||
|
@ -433,7 +433,7 @@ all_channels() ->
|
||||||
ets:select(?CHAN_TAB, Pat).
|
ets:select(?CHAN_TAB, Pat).
|
||||||
|
|
||||||
%% @doc Get clientinfo for all clients with sessions
|
%% @doc Get clientinfo for all clients with sessions
|
||||||
channel_with_session_table() ->
|
channel_with_session_table(ConnModules) ->
|
||||||
Ms = ets:fun2ms(
|
Ms = ets:fun2ms(
|
||||||
fun({{ClientId, _ChanPid},
|
fun({{ClientId, _ChanPid},
|
||||||
Info,
|
Info,
|
||||||
|
@ -441,22 +441,25 @@ channel_with_session_table() ->
|
||||||
{ClientId, Info}
|
{ClientId, Info}
|
||||||
end),
|
end),
|
||||||
Table = ets:table(?CHAN_INFO_TAB, [{traverse, {select, Ms}}]),
|
Table = ets:table(?CHAN_INFO_TAB, [{traverse, {select, Ms}}]),
|
||||||
|
ConnModuleMap = maps:from_list([{Mod, true} || Mod <- ConnModules]),
|
||||||
qlc:q([ {ClientId, ConnState, ConnInfo, ClientInfo}
|
qlc:q([ {ClientId, ConnState, ConnInfo, ClientInfo}
|
||||||
|| {ClientId,
|
|| {ClientId,
|
||||||
#{conn_state := ConnState,
|
#{conn_state := ConnState,
|
||||||
clientinfo := ClientInfo,
|
clientinfo := ClientInfo,
|
||||||
conninfo := #{clean_start := false} = ConnInfo}} <- Table
|
conninfo := #{clean_start := false, conn_mod := ConnModule} = ConnInfo}}
|
||||||
|
<- Table,
|
||||||
|
maps:is_key(ConnModule, ConnModuleMap)
|
||||||
]).
|
]).
|
||||||
|
|
||||||
%% @doc Get all local connection query handle
|
%% @doc Get all local connection query handle
|
||||||
live_connection_table() ->
|
live_connection_table(ConnModules) ->
|
||||||
Ms = ets:fun2ms(
|
Ms = lists:map(fun live_connection_ms/1, ConnModules),
|
||||||
fun({{ClientId, ChanPid}, _}) ->
|
|
||||||
{ClientId, ChanPid}
|
|
||||||
end),
|
|
||||||
Table = ets:table(?CHAN_CONN_TAB, [{traverse, {select, Ms}}]),
|
Table = ets:table(?CHAN_CONN_TAB, [{traverse, {select, Ms}}]),
|
||||||
qlc:q([{ClientId, ChanPid} || {ClientId, ChanPid} <- Table, is_channel_connected(ClientId, ChanPid)]).
|
qlc:q([{ClientId, ChanPid} || {ClientId, ChanPid} <- Table, is_channel_connected(ClientId, ChanPid)]).
|
||||||
|
|
||||||
|
live_connection_ms(ConnModule) ->
|
||||||
|
{{{'$1','$2'},ConnModule},[],[{{'$1','$2'}}]}.
|
||||||
|
|
||||||
is_channel_connected(ClientId, ChanPid) when node(ChanPid) =:= node() ->
|
is_channel_connected(ClientId, ChanPid) when node(ChanPid) =:= node() ->
|
||||||
case get_chan_info(ClientId, ChanPid) of
|
case get_chan_info(ClientId, ChanPid) of
|
||||||
#{conn_state := disconnected} -> false;
|
#{conn_state := disconnected} -> false;
|
||||||
|
|
Loading…
Reference in New Issue