Parcourir la source

ft: 代码修改

master
SisMaker il y a 3 ans
Parent
révision
4dee9e30e0
6 fichiers modifiés avec 18 ajouts et 30 suppressions
  1. +0
    -1
      src/tracer/tpTracerConsole.erl
  2. +1
    -3
      src/tracer/tpTracerFile.erl
  3. +0
    -1
      src/tracer/tpTracerPool.erl
  4. +5
    -9
      src/tracer/tpTracerSocket.erl
  5. +11
    -15
      src/utils/tpSocketCli.erl
  6. +1
    -1
      src/utils/tpTermCut.erl

+ 0
- 1
src/tracer/tpTracerConsole.erl Voir le fichier

@ -13,7 +13,6 @@ start_link(_Nth, _Opts) ->
{ok, Pid}.
init(Parent) ->
%% Store all messages off the heap to avoid unnecessary GC.
process_flag(message_queue_data, off_heap),
loop(Parent).

+ 1
- 3
src/tracer/tpTracerFile.erl Voir le fichier

@ -30,9 +30,7 @@ start_link(Nth, Opts) when is_map(Opts) ->
{ok, Pid}.
init(Parent, Nth, Opts) ->
%% Store all messages off the heap to avoid unnecessary GC.
process_flag(message_queue_data, off_heap),
%% We need to trap exit signals in order to shutdown properly.
process_flag(trap_exit, true),
%% No need to close the file, it'll be closed when the process exits.
Filename = filename:flatten([maps:get(filename_prefix, Opts, "traces.lz4"), ".", integer_to_list(Nth)]),
@ -47,7 +45,7 @@ loop(State = #state{parent = Parent, size = Size, ioDevice = IoDevice, eventsPer
{'EXIT', Parent, Reason} ->
terminate(Reason, State);
Msg0 ->
Msg = tpTerm:truncate(Msg0),
Msg = tpTermCut:truncate(Msg0),
Bin = term_to_binary(Msg),
BinSize = byte_size(Bin),
Buffer = <<Buffer0/binary, BinSize:32, Bin/binary>>,

+ 0
- 1
src/tracer/tpTracerPool.erl Voir le fichier

@ -20,7 +20,6 @@ init([NumTracers, TracerMod, Opts]) ->
} || Index <- lists:seq(1, NumTracers)
],
SupFlags = #{strategy => one_for_all, intensity => 5, period => 10},
{ok, {SupFlags, ChildSpecs}}.

+ 5
- 9
src/tracer/tpTracerSocket.erl Voir le fichier

@ -23,13 +23,9 @@ start_link(Nth, BasePort) ->
{ok, Pid}.
init(Parent, Port) ->
%% Store all messages off the heap to avoid unnecessary GC.
process_flag(message_queue_data, off_heap),
%% We need to trap exit signals in order to shutdown properly.
process_flag(trap_exit, true),
%% Open the listening socket.
{ok, LSocket} = gen_tcp:listen(Port, [binary, {reuseaddr, true}, {nodelay, true}, {packet, 2}, {active, true}, {backlog, 1}]),
%% We reject all messages until we get a connection.
accept(#state{parent = Parent, lSocket = LSocket}).
accept(State = #state{lSocket = LSocket}) ->
@ -58,7 +54,7 @@ trace_loop(State = #state{parent = Parent, timerRef = TRef}, CSocket) ->
exit(Reason);
{system, From, Request} ->
sys:handle_system_msg(Request, From, Parent, ?MODULE, [], {trace_loop, State, CSocket});
%% Reset the timeout when we receive data.
%% Reset the timeout when we receive data.
{tcp, CSocket, _} ->
trace_loop(reset_timeout(State), CSocket);
{tcp_closed, CSocket} ->
@ -67,20 +63,20 @@ trace_loop(State = #state{parent = Parent, timerRef = TRef}, CSocket) ->
close(State, CSocket);
{timeout, TRef, ?MODULE} ->
close(State, CSocket);
%% Discard the non-blocking send reply when successful.
%% Discard the non-blocking send reply when successful.
{inet_reply, CSocket, ok} ->
trace_loop(State, CSocket);
%% And close the socket when an error occured.
%% And close the socket when an error occured.
{inet_reply, CSocket, _} ->
close(State, CSocket);
%% Discard TCP messages from closed sockets.
%% Discard TCP messages from closed sockets.
{tcp, _, _} ->
trace_loop(State, CSocket);
{tcp_closed, _} ->
trace_loop(State, CSocket);
{tcp_error, _, _} ->
trace_loop(State, CSocket);
%% Discard any previous timeout.
%% Discard any previous timeout.
{timeout, _, ?MODULE} ->
trace_loop(State, CSocket);
Msg ->

+ 11
- 15
src/utils/tpSocketCli.erl Voir le fichier

@ -31,9 +31,7 @@ stop(Pid) ->
gen_srv:stop(Pid).
init([Port, BaseFilename]) ->
%% Store all messages off the heap to avoid unnecessary GC.
process_flag(message_queue_data, off_heap),
%% We need to trap exit signals in order to shutdown properly.
process_flag(trap_exit, true),
{ok, #state{port = Port, baseFileName = BaseFilename}, {nTimeout, connect, 0, doConnect}}.
@ -54,22 +52,15 @@ handleInfo({tcp, Socket, Bin}, State = #state{socket = Socket, ioDevice = IoDevi
true ->
{noreply, State#state{eventsThisFrame = NumEvents, buffer = Buffer}}
end;
handleInfo({tcp_closed, Socket}, State = #state{socket = Socket, ioDevice = IoDevice, buffer = Buffer}) ->
_ = gen_tcp:close(Socket),
_ = file:write(IoDevice, lz4f:compress_frame(Buffer)),
_ = file:close(IoDevice),
{noreply, State#state{socket = undefined, ioDevice = undefined, buffer = <<>>}, {nTimeout, connect, 0, doConnect}};
handleInfo({tcp_error, Socket, _}, State = #state{socket = Socket, ioDevice = IoDevice, buffer = Buffer}) ->
_ = gen_tcp:close(Socket),
_ = file:write(IoDevice, lz4f:compress_frame(Buffer)),
_ = file:close(IoDevice),
{noreply, State#state{socket = undefined, ioDevice = undefined, buffer = <<>>}, {nTimeout, connect, 0, doConnect}};
handleInfo({tcp_closed, _Socket}, State) ->
{noreply, clearSet(State), {nTimeout, connect, 0, doConnect}};
handleInfo({tcp_error, _Socket, _}, State) ->
{noreply, clearSet(State), {nTimeout, connect, 0, doConnect}};
handleInfo(doConnect, #state{port = Port, baseFileName = Filename0, nth = Nth} = State) ->
case gen_tcp:connect("localhost", Port, [binary, {packet, 2}, {active, true}]) of
{ok, Socket} ->
Filename = filename:flatten([Filename0, ".", integer_to_list(Nth)]),
{ok, IoDevice} = file:open(Filename, [write, raw]),
{noreply, State#state{socket = Socket, nth = Nth + 1, ioDevice = IoDevice}};
{error, _} ->
{noreply, State, {nTimeout, connect, 1000, doConnect}}
@ -80,7 +71,11 @@ handleInfo(_Msg, _State) ->
code_change(_OldVsn, State, _Extra) ->
{ok, State}.
terminate(_Reason, #state{socket = Socket, ioDevice = IoDevice, buffer = Buffer} = _State) ->
terminate(_Reason, State) ->
clearSet(State),
ok.
clearSet(#state{socket = Socket, ioDevice = IoDevice, buffer = Buffer} = State) ->
case Socket of
undefined ->
ignore;
@ -95,4 +90,5 @@ terminate(_Reason, #state{socket = Socket, ioDevice = IoDevice, buffer = Buffer}
_ = file:write(IoDevice, lz4f:compress_frame(Buffer)),
_ = file:close(IoDevice)
end,
ok.
State#state{socket = undefined, ioDevice = undefined, buffer = <<>>}.

src/utils/tpTerm.erl → src/utils/tpTermCut.erl Voir le fichier

@ -1,4 +1,4 @@
-module(tpTerm).
-module(tpTermCut).
%% 使

Chargement…
Annuler
Enregistrer