diff --git a/apps/emqx_dashboard/src/emqx_dashboard_monitor.erl b/apps/emqx_dashboard/src/emqx_dashboard_monitor.erl new file mode 100644 index 000000000..53f9bb5f8 --- /dev/null +++ b/apps/emqx_dashboard/src/emqx_dashboard_monitor.erl @@ -0,0 +1,87 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020-2022 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_dashboard_monitor). +-behaviour(gen_server). + +-export([start_link/0]). + +-export([ init/1 + , handle_call/3 + , handle_cast/2 + , handle_info/2 + , terminate/2 + , code_change/3 + ]). + +-export([ mnesia/1]). + +-define(TAB, ?MODULE). + +-record(state, {}). +-define(INIT_DATA, + #{ + sent => 0, + received => 0, + sent_bytes => 0, + received_bytes => 0, + dropped => 0, + subscriptions => 0, + routes => 0, + connection => 0 + }). + +-record(monitor_data) + +mnesia(boot) -> + ok = mria:create_table(?TAB, [ + {type, set}, + {local_content, true}, + {storage, disc_copies}, + {record_name, monitor_data}, + {attributes, record_info(fields, monitor_data)}]). + +start_link() -> + gen_server:start_link({global, ?MODULE}, ?MODULE, [], []). + +init([]) -> + {ok, #state{}}. + +handle_call(_Request, _From, State = #state{}) -> + {reply, ok, State}. + +handle_cast(_Request, State = #state{}) -> + {noreply, State}. + +handle_info(_Info, State = #state{}) -> + {noreply, State}. + +terminate(_Reason, _State = #state{}) -> + ok. + +code_change(_OldVsn, State = #state{}, _Extra) -> + {ok, State}. + +%%%=================================================================== +%%% Internal functions +%%%=================================================================== + +next_interval() -> + ExpireInterval = emqx_conf:get([dashboard, monitor, interval], ?EXPIRE_INTERVAL), + ok. + +monit() -> + ok.