This commit is contained in:
anlicheng 2025-05-20 11:35:17 +08:00
parent 45e3e1ec78
commit b13122674e
3 changed files with 26 additions and 1 deletions

View File

@ -22,6 +22,9 @@
-define(PACKET_ASYNC_CALL, 16#05). -define(PACKET_ASYNC_CALL, 16#05).
-define(PACKET_ASYNC_CALL_REPLY, 16#06). -define(PACKET_ASYNC_CALL_REPLY, 16#06).
%% ping包
-define(PACKET_PING, 16#FF).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% %%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

View File

@ -70,6 +70,7 @@ start_link(ParentPid, Host, Port) when is_pid(ParentPid), is_list(Host), is_inte
{ok, State :: #state{}} | {ok, State :: #state{}, timeout() | hibernate} | {ok, State :: #state{}} | {ok, State :: #state{}, timeout() | hibernate} |
{stop, Reason :: term()} | ignore). {stop, Reason :: term()} | ignore).
init([ParentPid, Host, Port]) -> init([ParentPid, Host, Port]) ->
ping_ticker(),
{ok, #state{parent_pid = ParentPid, host = Host, port = Port, socket = undefined}}. {ok, #state{parent_pid = ParentPid, host = Host, port = Port, socket = undefined}}.
%% @private %% @private
@ -160,6 +161,11 @@ handle_info({ssl_error, Socket, Reason}, State = #state{socket = Socket}) ->
handle_info({ssl_closed, Socket}, State = #state{socket = Socket}) -> handle_info({ssl_closed, Socket}, State = #state{socket = Socket}) ->
{stop, normal, State}; {stop, normal, State};
handle_info({timeout, _, ping_ticker}, State = #state{socket = Socket}) ->
ok = ssl:send(Socket, <<?PACKET_PING>>),
ping_ticker(),
{noreply, State};
handle_info(Info, State = #state{}) -> handle_info(Info, State = #state{}) ->
lager:notice("[efka_transport] get unknown info: ~p", [Info]), lager:notice("[efka_transport] get unknown info: ~p", [Info]),
{noreply, State}. {noreply, State}.
@ -185,4 +191,7 @@ code_change(_OldVsn, State = #state{}, _Extra) ->
%%%=================================================================== %%%===================================================================
%%% Internal functions %%% Internal functions
%%%=================================================================== %%%===================================================================
ping_ticker() ->
erlang:start_timer(5000, self(), ping_ticker).

View File

@ -17,6 +17,7 @@
-export([create_table/0]). -export([create_table/0]).
-export([insert/1, get_all_services/0, get_all_service_ids/0, get_running_services/0]). -export([insert/1, get_all_services/0, get_all_service_ids/0, get_running_services/0]).
-export([get_metrics/1, get_params/1, set_metrics/2, set_params/2, get_service/1, get_status/1, change_status/2]). -export([get_metrics/1, get_params/1, set_metrics/2, set_params/2, get_service/1, get_status/1, change_status/2]).
-export([display_services/0]).
create_table() -> create_table() ->
%% id生成器 %% id生成器
@ -150,4 +151,16 @@ get_running_services() ->
{ok, Services}; {ok, Services};
{aborted, Error} -> {aborted, Error} ->
{error, Error} {error, Error}
end.
display_services() ->
F = fun() ->
Q = qlc:q([E || E <- mnesia:table(?TAB), E]),
qlc:e(Q)
end,
case mnesia:transaction(F) of
{atomic, Services} ->
{ok, Services};
{aborted, Error} ->
{error, Error}
end. end.