|
@ -15,7 +15,7 @@ |
|
|
|
|
|
|
|
|
-record(state, { |
|
|
-record(state, { |
|
|
parent :: pid() |
|
|
parent :: pid() |
|
|
, fDir :: file:filename_all() %% file base name |
|
|
|
|
|
|
|
|
, fDir :: file:filename_all() %% file base name |
|
|
, fBaseName :: file:filename_all() %% file base name |
|
|
, fBaseName :: file:filename_all() %% file base name |
|
|
, size = 0 :: non_neg_integer() |
|
|
, size = 0 :: non_neg_integer() |
|
|
, fMaxSize :: infinity | non_neg_integer() |
|
|
, fMaxSize :: infinity | non_neg_integer() |
|
@ -33,7 +33,6 @@ start_link(Opts) -> |
|
|
init(Parent, TracerOpts) -> |
|
|
init(Parent, TracerOpts) -> |
|
|
process_flag(message_queue_data, off_heap), |
|
|
process_flag(message_queue_data, off_heap), |
|
|
process_flag(trap_exit, true), |
|
|
process_flag(trap_exit, true), |
|
|
%% No need to close the file, it'll be closed when the process exits. |
|
|
|
|
|
FDir = maps:get(fDir, TracerOpts, <<"./">>), |
|
|
FDir = maps:get(fDir, TracerOpts, <<"./">>), |
|
|
FBaseName = maps:get(fBaseName, TracerOpts, <<"traces.tzip">>), |
|
|
FBaseName = maps:get(fBaseName, TracerOpts, <<"traces.tzip">>), |
|
|
Filename = fileName(FDir, FBaseName), |
|
|
Filename = fileName(FDir, FBaseName), |
|
@ -77,7 +76,7 @@ loop(#state{parent = Parent, size = Size, fDir = FDir, fBaseName = FBaseName, io |
|
|
|
|
|
|
|
|
case NewMsgCnt >= FMaxMsg of |
|
|
case NewMsgCnt >= FMaxMsg of |
|
|
true -> |
|
|
true -> |
|
|
MsgListBin = zlib:compress(term_to_binary(NewMsgList)), |
|
|
|
|
|
|
|
|
MsgListBin = zlib:zip(term_to_binary(NewMsgList)), |
|
|
MsgListSize = byte_size(MsgListBin), |
|
|
MsgListSize = byte_size(MsgListBin), |
|
|
NewSize = Size + MsgListSize, |
|
|
NewSize = Size + MsgListSize, |
|
|
ok = file:write(IoDevice, [<<NewSize:32>>, MsgListBin]), |
|
|
ok = file:write(IoDevice, [<<NewSize:32>>, MsgListBin]), |
|
@ -108,7 +107,7 @@ system_code_change(Misc, _, _, _) -> |
|
|
|
|
|
|
|
|
-spec terminate(any(), #state{}) -> no_return(). |
|
|
-spec terminate(any(), #state{}) -> no_return(). |
|
|
terminate(Reason, #state{ioDevice = IoDevice, size = Size, msgList = MsgList}) -> |
|
|
terminate(Reason, #state{ioDevice = IoDevice, size = Size, msgList = MsgList}) -> |
|
|
MsgListBin = zlib:compress(term_to_binary(MsgList)), |
|
|
|
|
|
|
|
|
MsgListBin = zlib:zip(term_to_binary(MsgList)), |
|
|
MsgListSize = byte_size(MsgListBin), |
|
|
MsgListSize = byte_size(MsgListBin), |
|
|
NewSize = Size + MsgListSize, |
|
|
NewSize = Size + MsgListSize, |
|
|
ok = file:write(IoDevice, [<<NewSize:32>>, MsgListBin]), |
|
|
ok = file:write(IoDevice, [<<NewSize:32>>, MsgListBin]), |
|
|