This commit is contained in:
anlicheng 2025-05-06 11:28:16 +08:00
parent 11ecea63b7
commit 6af04c3e7a
4 changed files with 28 additions and 29 deletions

View File

@ -76,7 +76,7 @@
cpu_temperature = 0.0 :: float() | integer() | infinity | '-infinity' | nan | undefined, % = 10, optional
disk = [] :: [integer()] | undefined, % = 11, repeated, 32 bits
memory = [] :: [integer()] | undefined, % = 12, repeated, 32 bits
interfaces = [] :: [iodata()] | undefined % = 13, repeated
interfaces = <<>> :: unicode:chardata() | undefined % = 13, optional
}).
-endif.

View File

@ -45,6 +45,10 @@
data(ServiceName, DeviceUUID, At, Tags, Fields) when is_binary(ServiceName), is_binary(DeviceUUID), is_integer(At), is_map(Tags), is_binary(Fields) ->
gen_server:cast(?SERVER, {data, ServiceName, DeviceUUID, At, Tags, Fields}).
ping() ->
ok.
%% @doc Spawns the server and registers the local name (unique)
-spec(start_link() ->
{ok, Pid :: pid()} | ignore | {error, Reason :: term()}).

View File

@ -423,11 +423,15 @@ encode_msg_ping(#ping{adcode = F1, boot_time = F2, province = F3, city = F4, efk
true -> e_field_ping_memory(TrF12, B11, TrUserData)
end
end,
begin
TrF13 = id(F13, TrUserData),
if TrF13 == [] -> B12;
true -> e_field_ping_interfaces(TrF13, B12, TrUserData)
end
if F13 == undefined -> B12;
true ->
begin
TrF13 = id(F13, TrUserData),
case is_empty_string(TrF13) of
true -> B12;
false -> e_type_string(TrF13, <<B12/binary, 106>>, TrUserData)
end
end
end.
encode_msg_service_inform(Msg, TrUserData) -> encode_msg_service_inform(Msg, <<>>, TrUserData).
@ -669,12 +673,6 @@ e_pfield_ping_memory([Value | Rest], Bin, TrUserData) ->
e_pfield_ping_memory(Rest, Bin2, TrUserData);
e_pfield_ping_memory([], Bin, _TrUserData) -> Bin.
e_field_ping_interfaces([Elem | Rest], Bin, TrUserData) ->
Bin2 = <<Bin/binary, 106>>,
Bin3 = e_type_bytes(id(Elem, TrUserData), Bin2, TrUserData),
e_field_ping_interfaces(Rest, Bin3, TrUserData);
e_field_ping_interfaces([], Bin, _TrUserData) -> Bin.
'encode_msg_map<string,string>'(#'map<string,string>'{key = F1, value = F2}, Bin, TrUserData) ->
B1 = begin TrF1 = id(F1, TrUserData), e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData) end,
begin TrF2 = id(F2, TrUserData), e_type_string(TrF2, <<B1/binary, 18>>, TrUserData) end.
@ -1190,7 +1188,7 @@ decode_msg_ping(Bin, TrUserData) ->
id(0.0, TrUserData),
id([], TrUserData),
id([], TrUserData),
id([], TrUserData),
id(<<>>, TrUserData),
TrUserData).
dfp_read_field_def_ping(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, TrUserData) ->
@ -1223,9 +1221,9 @@ dfp_read_field_def_ping(<<96, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4,
d_field_ping_memory(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, TrUserData);
dfp_read_field_def_ping(<<106, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, TrUserData) ->
d_field_ping_interfaces(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, TrUserData);
dfp_read_field_def_ping(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, R1, F@_8, F@_9, F@_10, R2, R3, R4, TrUserData) ->
dfp_read_field_def_ping(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, R1, F@_8, F@_9, F@_10, R2, R3, F@_13, TrUserData) ->
#ping{adcode = F@_1, boot_time = F@_2, province = F@_3, city = F@_4, efka_version = F@_5, kernel_arch = F@_6, ips = lists_reverse(R1, TrUserData), cpu_core = F@_8, cpu_load = F@_9, cpu_temperature = F@_10, disk = lists_reverse(R2, TrUserData),
memory = lists_reverse(R3, TrUserData), interfaces = lists_reverse(R4, TrUserData)};
memory = lists_reverse(R3, TrUserData), interfaces = F@_13};
dfp_read_field_def_ping(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, TrUserData) ->
dg_read_field_def_ping(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, TrUserData).
@ -1258,9 +1256,9 @@ dg_read_field_def_ping(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, F
5 -> skip_32_ping(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, TrUserData)
end
end;
dg_read_field_def_ping(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, R1, F@_8, F@_9, F@_10, R2, R3, R4, TrUserData) ->
dg_read_field_def_ping(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, R1, F@_8, F@_9, F@_10, R2, R3, F@_13, TrUserData) ->
#ping{adcode = F@_1, boot_time = F@_2, province = F@_3, city = F@_4, efka_version = F@_5, kernel_arch = F@_6, ips = lists_reverse(R1, TrUserData), cpu_core = F@_8, cpu_load = F@_9, cpu_temperature = F@_10, disk = lists_reverse(R2, TrUserData),
memory = lists_reverse(R3, TrUserData), interfaces = lists_reverse(R4, TrUserData)}.
memory = lists_reverse(R3, TrUserData), interfaces = F@_13}.
d_field_ping_adcode(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, TrUserData) when N < 57 ->
d_field_ping_adcode(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, TrUserData);
@ -1367,9 +1365,9 @@ d_packed_field_ping_memory(<<>>, 0, 0, _, AccSeq, _) -> AccSeq.
d_field_ping_interfaces(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, TrUserData) when N < 57 ->
d_field_ping_interfaces(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, TrUserData);
d_field_ping_interfaces(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, Prev, TrUserData) ->
d_field_ping_interfaces(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, _, TrUserData) ->
{NewFValue, RestF} = begin Len = X bsl N + Acc, <<Bytes:Len/binary, Rest2/binary>> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end,
dfp_read_field_def_ping(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, cons(NewFValue, Prev, TrUserData), TrUserData).
dfp_read_field_def_ping(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, NewFValue, TrUserData).
skip_varint_ping(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, TrUserData) ->
skip_varint_ping(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13, TrUserData);
@ -1985,9 +1983,8 @@ merge_msg_ping(#ping{adcode = PFadcode, boot_time = PFboot_time, province = PFpr
NFmemory == undefined -> PFmemory
end,
interfaces =
if PFinterfaces /= undefined, NFinterfaces /= undefined -> 'erlang_++'(PFinterfaces, NFinterfaces, TrUserData);
PFinterfaces == undefined -> NFinterfaces;
NFinterfaces == undefined -> PFinterfaces
if NFinterfaces =:= undefined -> PFinterfaces;
true -> NFinterfaces
end}.
-compile({nowarn_unused_function,merge_msg_service_inform/3}).
@ -2236,10 +2233,8 @@ v_msg_ping(#ping{adcode = F1, boot_time = F2, province = F3, city = F4, efka_ver
ok;
true -> mk_type_error({invalid_list_of, int32}, F12, [memory | Path])
end,
if is_list(F13) ->
_ = [v_type_bytes(Elem, [interfaces | Path], TrUserData) || Elem <- F13],
ok;
true -> mk_type_error({invalid_list_of, bytes}, F13, [interfaces | Path])
if F13 == undefined -> ok;
true -> v_type_string(F13, [interfaces | Path], TrUserData)
end,
ok;
v_msg_ping(X, Path, _TrUserData) -> mk_type_error({expected_msg, ping}, X, Path).
@ -2494,7 +2489,7 @@ get_msg_defs() ->
#field{name = cpu_temperature, fnum = 10, rnum = 11, type = float, occurrence = optional, opts = []},
#field{name = disk, fnum = 11, rnum = 12, type = int32, occurrence = repeated, opts = [packed]},
#field{name = memory, fnum = 12, rnum = 13, type = int32, occurrence = repeated, opts = [packed]},
#field{name = interfaces, fnum = 13, rnum = 14, type = bytes, occurrence = repeated, opts = []}]},
#field{name = interfaces, fnum = 13, rnum = 14, type = string, occurrence = optional, opts = []}]},
{{msg, service_inform},
[#field{name = name, fnum = 1, rnum = 2, type = string, occurrence = optional, opts = []},
#field{name = props, fnum = 2, rnum = 3, type = string, occurrence = optional, opts = []},
@ -2569,7 +2564,7 @@ find_msg_def(ping) ->
#field{name = cpu_temperature, fnum = 10, rnum = 11, type = float, occurrence = optional, opts = []},
#field{name = disk, fnum = 11, rnum = 12, type = int32, occurrence = repeated, opts = [packed]},
#field{name = memory, fnum = 12, rnum = 13, type = int32, occurrence = repeated, opts = [packed]},
#field{name = interfaces, fnum = 13, rnum = 14, type = bytes, occurrence = repeated, opts = []}];
#field{name = interfaces, fnum = 13, rnum = 14, type = string, occurrence = optional, opts = []}];
find_msg_def(service_inform) ->
[#field{name = name, fnum = 1, rnum = 2, type = string, occurrence = optional, opts = []},
#field{name = props, fnum = 2, rnum = 3, type = string, occurrence = optional, opts = []},

View File

@ -70,7 +70,7 @@ message Ping {
repeated int32 disk = 11;
repeated int32 memory = 12;
// : , json格式传输
repeated bytes interfaces = 13;
string interfaces = 13;
}
// Inform消息