fix efka_client
This commit is contained in:
parent
045b32d3a1
commit
db5a5e9071
@ -17,7 +17,7 @@
|
||||
%% API
|
||||
-export([start_link/0]).
|
||||
-export([metric_data/2, ping/13, task_event_stream/3, close_task_event_stream/2]).
|
||||
-export([send_task_event_stream/3, send_close_task_event_stream/2]).
|
||||
-export([is_activated/0]).
|
||||
|
||||
%% gen_statem callbacks
|
||||
-export([init/1, handle_event/4, terminate/3, code_change/4, callback_mode/0]).
|
||||
@ -56,13 +56,9 @@ task_event_stream(TaskId, Type, Stream) when is_integer(TaskId), is_binary(Type)
|
||||
close_task_event_stream(TaskId, Reason) when is_integer(TaskId), is_binary(Reason) ->
|
||||
gen_statem:cast(?SERVER, {close_task_event_stream, TaskId, Reason}).
|
||||
|
||||
-spec send_task_event_stream(TaskId :: integer(), Type :: binary(), Stream :: binary()) -> ok | not_ready.
|
||||
send_task_event_stream(TaskId, Type, Stream) when is_integer(TaskId), is_binary(Type), is_binary(Stream) ->
|
||||
gen_statem:call(?SERVER, {send_task_event_stream, TaskId, Type, Stream}).
|
||||
|
||||
-spec send_close_task_event_stream(TaskId :: integer(), Reason :: binary()) -> ok | not_ready.
|
||||
send_close_task_event_stream(TaskId, Reason) when is_integer(TaskId), is_binary(Reason) ->
|
||||
gen_statem:call(?SERVER, {send_close_task_event_stream, TaskId, Reason}).
|
||||
-spec is_activated() -> boolean().
|
||||
is_activated() ->
|
||||
gen_statem:call(?SERVER, is_activated).
|
||||
|
||||
ping(AdCode, BootTime, Province, City, EfkaVersion, KernelArch, Ips, CpuCore, CpuLoad, CpuTemperature, Disk, Memory, Interfaces) ->
|
||||
gen_statem:cast(?SERVER, {ping, AdCode, BootTime, Province, City, EfkaVersion, KernelArch, Ips, CpuCore, CpuLoad, CpuTemperature, Disk, Memory, Interfaces}).
|
||||
@ -118,23 +114,10 @@ handle_event(cast, {task_event_stream, _TaskId, _Stream}, _, State = #state{}) -
|
||||
handle_event(cast, {close_task_event_stream, _TaskId, _Reason}, _, State = #state{}) ->
|
||||
{keep_state, State};
|
||||
|
||||
handle_event({call, From}, {send_task_event_stream, TaskId, Type, Stream}, ?STATE_ACTIVATED, State = #state{socket = Socket}) ->
|
||||
EventPacket = message_pb:encode_msg(#'CastFrame'{
|
||||
body = {event_stream, #'TaskEventStream'{task_id = TaskId, type = Type, stream = Stream}}
|
||||
}),
|
||||
send_packet(Socket, <<?FRAME_CAST, EventPacket/binary>>),
|
||||
{keep_state, State, [{reply, From, ok}]};
|
||||
handle_event({call, From}, {send_task_event_stream, _TaskId, _Type, _Stream}, _StateName, State = #state{}) ->
|
||||
{keep_state, State, [{reply, From, not_ready}]};
|
||||
|
||||
handle_event({call, From}, {send_close_task_event_stream, TaskId, Reason}, ?STATE_ACTIVATED, State = #state{socket = Socket}) ->
|
||||
EventPacket = message_pb:encode_msg(#'CastFrame'{
|
||||
body = {event_stream, #'TaskEventStream'{task_id = TaskId, type = <<"close">>, stream = Reason}}
|
||||
}),
|
||||
send_packet(Socket, <<?FRAME_CAST, EventPacket/binary>>),
|
||||
{keep_state, State, [{reply, From, ok}]};
|
||||
handle_event({call, From}, {send_close_task_event_stream, _TaskId, _Reason}, _StateName, State = #state{}) ->
|
||||
{keep_state, State, [{reply, From, not_ready}]};
|
||||
handle_event({call, From}, is_activated, ?STATE_ACTIVATED, State = #state{}) ->
|
||||
{keep_state, State, [{reply, From, true}]};
|
||||
handle_event({call, From}, is_activated, _StateName, State = #state{}) ->
|
||||
{keep_state, State, [{reply, From, false}]};
|
||||
|
||||
%% 异步建立到服务器的连接
|
||||
handle_event(info, {timeout, _, create_transport}, ?STATE_DISCONNECTED, State = #state{next_packet_id = PacketId}) ->
|
||||
|
||||
@ -97,11 +97,15 @@ flush_pending(State = #state{pending = Pending0}) ->
|
||||
end.
|
||||
|
||||
send_event({stream, TaskId, Type, Stream}) ->
|
||||
send_result(catch efka_client:send_task_event_stream(TaskId, Type, Stream));
|
||||
maybe_send(fun() -> efka_client:task_event_stream(TaskId, Type, Stream) end);
|
||||
send_event({close, TaskId, Reason}) ->
|
||||
send_result(catch efka_client:send_close_task_event_stream(TaskId, Reason)).
|
||||
maybe_send(fun() -> efka_client:close_task_event_stream(TaskId, Reason) end).
|
||||
|
||||
send_result(ok) ->
|
||||
ok;
|
||||
send_result(_) ->
|
||||
not_ready.
|
||||
maybe_send(SendFun) ->
|
||||
case catch efka_client:is_activated() of
|
||||
true ->
|
||||
_ = catch SendFun(),
|
||||
ok;
|
||||
_ ->
|
||||
not_ready
|
||||
end.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user