From 611b325cd42c3204b951557d455723fd33f507fd Mon Sep 17 00:00:00 2001 From: anlicheng <244108715@qq.com> Date: Fri, 24 Apr 2026 15:40:32 +0800 Subject: [PATCH] fix command --- include/message_pb.hrl | 10 +- include/protocol.hrl | 6 +- src/host/iot_host.erl | 10 +- src/iot_util.erl | 31 +--- src/protobuf/message_pb.erl | 269 +++++++++++++++++++++--------- src/transport/tcp/ssl_channel.erl | 12 +- 6 files changed, 213 insertions(+), 125 deletions(-) diff --git a/include/message_pb.hrl b/include/message_pb.hrl index 8c94880..fd238a5 100644 --- a/include/message_pb.hrl +++ b/include/message_pb.hrl @@ -55,8 +55,14 @@ -ifndef('CASTFRAME.COMMAND_PB_H'). -define('CASTFRAME.COMMAND_PB_H', true). -record('CastFrame.Command', - {command_type = 0 :: integer() | undefined, % = 1, optional, 32 bits - command = <<>> :: iodata() | undefined % = 2, optional + {command :: {auth, message_pb:'CastFrame.Command.Authorization'()} | undefined % oneof + }). +-endif. + +-ifndef('CASTFRAME.COMMAND.AUTHORIZATION_PB_H'). +-define('CASTFRAME.COMMAND.AUTHORIZATION_PB_H', true). +-record('CastFrame.Command.Authorization', + {cmd = 'DEACTIVATE' :: 'DEACTIVATE' | 'ACTIVATE' | integer() | undefined % = 1, optional, enum CastFrame.Command.Authorization.CommandType }). -endif. diff --git a/include/protocol.hrl b/include/protocol.hrl index daab48e..61660ad 100644 --- a/include/protocol.hrl +++ b/include/protocol.hrl @@ -13,8 +13,4 @@ %% CAST: 单向消息帧,不需要响应 -define(FRAME_REQUEST, 16#01). -define(FRAME_REPLY, 16#02). --define(FRAME_CAST, 16#03). - -%%%% 命令类型子分类, 不需要返回值 -%% 授权 --define(COMMAND_AUTH, 16#08). +-define(FRAME_CAST, 16#03). \ No newline at end of file diff --git a/src/host/iot_host.erl b/src/host/iot_host.erl index 6661b87..503f283 100644 --- a/src/host/iot_host.erl +++ b/src/host/iot_host.erl @@ -266,7 +266,10 @@ handle_event({call, From}, {activate, true}, _, State = #state{uuid = UUID, chan case is_pid(ChannelPid) of true -> logger:debug("[iot_host] uuid: ~p, activate: true", [UUID]), - ssl_channel:command(ChannelPid, ?COMMAND_AUTH, <<1:8>>); + Command = #'CastFrame.Command'{ + command = {auth, #'CastFrame.Command.Authorization'{cmd = 'ACTIVATE'}} + }, + ssl_channel:command(ChannelPid, Command); false -> logger:debug("[iot_host] uuid: ~p, activate: true, no channel", [UUID]) end, @@ -276,7 +279,10 @@ handle_event({call, From}, {activate, true}, _, State = #state{uuid = UUID, chan handle_event({call, From}, {activate, false}, _, State = #state{uuid = UUID, channel_pid = ChannelPid}) -> case is_pid(ChannelPid) of true -> - ssl_channel:command(ChannelPid, ?COMMAND_AUTH, <<0:8>>), + Command = #'CastFrame.Command' { + command = {auth, #'CastFrame.Command.Authorization'{cmd = 'DEACTIVATE'}} + }, + ssl_channel:command(ChannelPid, Command), logger:debug("[iot_host] uuid: ~p, activate: false", [UUID]), ssl_channel:stop(ChannelPid, closed); false -> diff --git a/src/iot_util.erl b/src/iot_util.erl index edc4160..c53eb1f 100644 --- a/src/iot_util.erl +++ b/src/iot_util.erl @@ -10,8 +10,8 @@ -author("licheng5"). %% API --export([timestamp/0, number_format/2, current_time/0, timestamp_of_seconds/0, float_to_binary/2, int_format/2, file_uri/1]). --export([step/3, chunks/2, rand_bytes/1, uuid/0, md5/1, parse_mapper/1]). +-export([timestamp/0, number_format/2, current_time/0, timestamp_of_seconds/0, float_to_binary/2, int_format/2]). +-export([step/3, rand_bytes/1, uuid/0, md5/1, parse_mapper/1]). -export([json_data/1, json_error/2, is_json/1]). -export([queue_limited_in/3, assert_call/2, assert/2]). -export([sha256/1]). @@ -61,21 +61,6 @@ step(Start, End, Step, Acc) when Start < End -> step(_, _, _, Acc) -> lists:reverse(Acc). -%% 将数据分组 --spec chunks(list(), integer()) -> [list()]. -chunks(List, Size) when is_list(List), is_integer(Size), Size > 0, length(List) =< Size -> - [List]; -chunks(List, Size) when is_list(List), is_integer(Size), Size > 0 -> - chunks0(List, Size, Size, [], []). -chunks0([], _, _, [], AccTarget) -> - lists:reverse(AccTarget); -chunks0([], _, _, Target, AccTarget) -> - lists:reverse([lists:reverse(Target) | AccTarget]); -chunks0(List, Size, 0, Target, AccTarget) -> - chunks0(List, Size, Size, [], [lists:reverse(Target) | AccTarget]); -chunks0([Hd | Tail], Size, Num, Target, AccTarget) -> - chunks0(Tail, Size, Num - 1, [Hd | Target], AccTarget). - json_data(Data) -> iolist_to_binary(json:encode(#{ <<"result">> => Data @@ -157,14 +142,4 @@ assert(true, _) -> assert(false, F) when is_function(F) -> F(); assert(false, Msg) -> - throw(Msg). - - --spec file_uri(Filename :: binary()) -> error | {ok, FileUri :: binary()}. -file_uri(Filename) when is_binary(Filename) -> - case binary:split(Filename, <<"-">>, [global]) of - [Year, Month, Day | _] -> - {ok, <<"https://lgsiot.njau.edu.cn/upload/", Year/binary, $/, Month/binary, $/, Day/binary, $/, Filename/binary>>}; - _ -> - error - end. + throw(Msg). \ No newline at end of file diff --git a/src/protobuf/message_pb.erl b/src/protobuf/message_pb.erl index d21b13d..b3100d1 100644 --- a/src/protobuf/message_pb.erl +++ b/src/protobuf/message_pb.erl @@ -17,6 +17,7 @@ -export([find_msg_def/1, fetch_msg_def/1]). -export([find_enum_def/1, fetch_enum_def/1]). -export([enum_symbol_by_value/2, enum_value_by_symbol/2]). +-export(['enum_symbol_by_value_CastFrame.Command.Authorization.CommandType'/1, 'enum_value_by_symbol_CastFrame.Command.Authorization.CommandType'/1]). -export([get_service_names/0]). -export([get_service_def/1]). -export([get_rpc_names/1]). @@ -50,8 +51,8 @@ -include_lib("gpb/include/gpb.hrl"). %% enumerated types - --export_type([]). +-type 'CastFrame.Command.Authorization.CommandType'() :: 'DEACTIVATE' | 'ACTIVATE'. +-export_type(['CastFrame.Command.Authorization.CommandType'/0]). %% message types -type 'RequestFrame'() :: #'RequestFrame'{}. @@ -66,6 +67,8 @@ -type 'CastFrame.Command'() :: #'CastFrame.Command'{}. +-type 'CastFrame.Command.Authorization'() :: #'CastFrame.Command.Authorization'{}. + -type 'CastFrame.Data'() :: #'CastFrame.Data'{}. -type 'CastFrame.TaskEvent'() :: #'CastFrame.TaskEvent'{}. @@ -112,9 +115,9 @@ -type 'Ulimit'() :: #'Ulimit'{}. --export_type(['RequestFrame'/0, 'AuthRequest'/0, 'ReplyFrame.Error'/0, 'ReplyFrame'/0, 'CastFrame.Pub'/0, 'CastFrame.Command'/0, 'CastFrame.Data'/0, 'CastFrame.TaskEvent'/0, 'CastFrame'/0, 'ContainerRef'/0, 'ContainerRequest.List'/0, 'ContainerRequest.Deploy'/0, 'ContainerRequest.Start'/0, 'ContainerRequest.Stop'/0, 'ContainerRequest.Kill'/0, 'ContainerRequest.Remove'/0, 'ContainerRequest.Config'/0, 'ContainerRequest'/0, 'ContainerDeployParams'/0, 'DockerCreateOptions'/0, 'DockerContainerConfig'/0, 'DockerHostConfig'/0, 'DockerNetworkingConfig'/0, 'DockerNetworkEndpoint'/0, 'DockerExposedPort'/0, 'Healthcheck'/0, 'RestartPolicy'/0, 'DeviceMapping'/0, 'Ulimit'/0]). --type '$msg_name'() :: 'RequestFrame' | 'AuthRequest' | 'ReplyFrame.Error' | 'ReplyFrame' | 'CastFrame.Pub' | 'CastFrame.Command' | 'CastFrame.Data' | 'CastFrame.TaskEvent' | 'CastFrame' | 'ContainerRef' | 'ContainerRequest.List' | 'ContainerRequest.Deploy' | 'ContainerRequest.Start' | 'ContainerRequest.Stop' | 'ContainerRequest.Kill' | 'ContainerRequest.Remove' | 'ContainerRequest.Config' | 'ContainerRequest' | 'ContainerDeployParams' | 'DockerCreateOptions' | 'DockerContainerConfig' | 'DockerHostConfig' | 'DockerNetworkingConfig' | 'DockerNetworkEndpoint' | 'DockerExposedPort' | 'Healthcheck' | 'RestartPolicy' | 'DeviceMapping' | 'Ulimit'. --type '$msg'() :: 'RequestFrame'() | 'AuthRequest'() | 'ReplyFrame.Error'() | 'ReplyFrame'() | 'CastFrame.Pub'() | 'CastFrame.Command'() | 'CastFrame.Data'() | 'CastFrame.TaskEvent'() | 'CastFrame'() | 'ContainerRef'() | 'ContainerRequest.List'() | 'ContainerRequest.Deploy'() | 'ContainerRequest.Start'() | 'ContainerRequest.Stop'() | 'ContainerRequest.Kill'() | 'ContainerRequest.Remove'() | 'ContainerRequest.Config'() | 'ContainerRequest'() | 'ContainerDeployParams'() | 'DockerCreateOptions'() | 'DockerContainerConfig'() | 'DockerHostConfig'() | 'DockerNetworkingConfig'() | 'DockerNetworkEndpoint'() | 'DockerExposedPort'() | 'Healthcheck'() | 'RestartPolicy'() | 'DeviceMapping'() | 'Ulimit'(). +-export_type(['RequestFrame'/0, 'AuthRequest'/0, 'ReplyFrame.Error'/0, 'ReplyFrame'/0, 'CastFrame.Pub'/0, 'CastFrame.Command'/0, 'CastFrame.Command.Authorization'/0, 'CastFrame.Data'/0, 'CastFrame.TaskEvent'/0, 'CastFrame'/0, 'ContainerRef'/0, 'ContainerRequest.List'/0, 'ContainerRequest.Deploy'/0, 'ContainerRequest.Start'/0, 'ContainerRequest.Stop'/0, 'ContainerRequest.Kill'/0, 'ContainerRequest.Remove'/0, 'ContainerRequest.Config'/0, 'ContainerRequest'/0, 'ContainerDeployParams'/0, 'DockerCreateOptions'/0, 'DockerContainerConfig'/0, 'DockerHostConfig'/0, 'DockerNetworkingConfig'/0, 'DockerNetworkEndpoint'/0, 'DockerExposedPort'/0, 'Healthcheck'/0, 'RestartPolicy'/0, 'DeviceMapping'/0, 'Ulimit'/0]). +-type '$msg_name'() :: 'RequestFrame' | 'AuthRequest' | 'ReplyFrame.Error' | 'ReplyFrame' | 'CastFrame.Pub' | 'CastFrame.Command' | 'CastFrame.Command.Authorization' | 'CastFrame.Data' | 'CastFrame.TaskEvent' | 'CastFrame' | 'ContainerRef' | 'ContainerRequest.List' | 'ContainerRequest.Deploy' | 'ContainerRequest.Start' | 'ContainerRequest.Stop' | 'ContainerRequest.Kill' | 'ContainerRequest.Remove' | 'ContainerRequest.Config' | 'ContainerRequest' | 'ContainerDeployParams' | 'DockerCreateOptions' | 'DockerContainerConfig' | 'DockerHostConfig' | 'DockerNetworkingConfig' | 'DockerNetworkEndpoint' | 'DockerExposedPort' | 'Healthcheck' | 'RestartPolicy' | 'DeviceMapping' | 'Ulimit'. +-type '$msg'() :: 'RequestFrame'() | 'AuthRequest'() | 'ReplyFrame.Error'() | 'ReplyFrame'() | 'CastFrame.Pub'() | 'CastFrame.Command'() | 'CastFrame.Command.Authorization'() | 'CastFrame.Data'() | 'CastFrame.TaskEvent'() | 'CastFrame'() | 'ContainerRef'() | 'ContainerRequest.List'() | 'ContainerRequest.Deploy'() | 'ContainerRequest.Start'() | 'ContainerRequest.Stop'() | 'ContainerRequest.Kill'() | 'ContainerRequest.Remove'() | 'ContainerRequest.Config'() | 'ContainerRequest'() | 'ContainerDeployParams'() | 'DockerCreateOptions'() | 'DockerContainerConfig'() | 'DockerHostConfig'() | 'DockerNetworkingConfig'() | 'DockerNetworkEndpoint'() | 'DockerExposedPort'() | 'Healthcheck'() | 'RestartPolicy'() | 'DeviceMapping'() | 'Ulimit'(). -export_type(['$msg_name'/0, '$msg'/0]). -record('map',{key, value}). @@ -148,6 +151,7 @@ encode_msg(Msg, MsgName, Opts) -> 'ReplyFrame' -> encode_msg_ReplyFrame(id(Msg, TrUserData), TrUserData); 'CastFrame.Pub' -> 'encode_msg_CastFrame.Pub'(id(Msg, TrUserData), TrUserData); 'CastFrame.Command' -> 'encode_msg_CastFrame.Command'(id(Msg, TrUserData), TrUserData); + 'CastFrame.Command.Authorization' -> 'encode_msg_CastFrame.Command.Authorization'(id(Msg, TrUserData), TrUserData); 'CastFrame.Data' -> 'encode_msg_CastFrame.Data'(id(Msg, TrUserData), TrUserData); 'CastFrame.TaskEvent' -> 'encode_msg_CastFrame.TaskEvent'(id(Msg, TrUserData), TrUserData); 'CastFrame' -> encode_msg_CastFrame(id(Msg, TrUserData), TrUserData); @@ -331,23 +335,21 @@ encode_msg_ReplyFrame(#'ReplyFrame'{packet_id = F1, reply = F2}, Bin, TrUserData 'encode_msg_CastFrame.Command'(Msg, TrUserData) -> 'encode_msg_CastFrame.Command'(Msg, <<>>, TrUserData). -'encode_msg_CastFrame.Command'(#'CastFrame.Command'{command_type = F1, command = F2}, Bin, TrUserData) -> - B1 = if F1 == undefined -> Bin; - true -> - begin - TrF1 = id(F1, TrUserData), - if TrF1 =:= 0 -> Bin; - true -> e_type_int32(TrF1, <>, TrUserData) - end - end - end, - if F2 == undefined -> B1; +'encode_msg_CastFrame.Command'(#'CastFrame.Command'{command = F1}, Bin, TrUserData) -> + if F1 =:= undefined -> Bin; + true -> case id(F1, TrUserData) of {auth, TF1} -> begin TrTF1 = id(TF1, TrUserData), 'e_mfield_CastFrame.Command_auth'(TrTF1, <>, TrUserData) end end + end. + +'encode_msg_CastFrame.Command.Authorization'(Msg, TrUserData) -> 'encode_msg_CastFrame.Command.Authorization'(Msg, <<>>, TrUserData). + + +'encode_msg_CastFrame.Command.Authorization'(#'CastFrame.Command.Authorization'{cmd = F1}, Bin, TrUserData) -> + if F1 == undefined -> Bin; true -> begin - TrF2 = id(F2, TrUserData), - case iolist_size(TrF2) of - 0 -> B1; - _ -> e_type_bytes(TrF2, <>, TrUserData) + TrF1 = id(F1, TrUserData), + if TrF1 =:= 'DEACTIVATE'; TrF1 =:= 0 -> Bin; + true -> 'e_enum_CastFrame.Command.Authorization.CommandType'(TrF1, <>, TrUserData) end end end. @@ -1091,6 +1093,11 @@ e_mfield_ReplyFrame_error(Msg, Bin, TrUserData) -> Bin2 = e_varint(byte_size(SubBin), Bin), <>. +'e_mfield_CastFrame.Command_auth'(Msg, Bin, TrUserData) -> + SubBin = 'encode_msg_CastFrame.Command.Authorization'(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + e_mfield_CastFrame_pub(Msg, Bin, TrUserData) -> SubBin = 'encode_msg_CastFrame.Pub'(Msg, <<>>, TrUserData), Bin2 = e_varint(byte_size(SubBin), Bin), @@ -1341,6 +1348,10 @@ e_field_Healthcheck_test([], Bin, _TrUserData) -> Bin. B1 = begin TrF1 = id(F1, TrUserData), e_type_string(TrF1, <>, TrUserData) end, begin TrF2 = id(F2, TrUserData), e_type_string(TrF2, <>, TrUserData) end. +'e_enum_CastFrame.Command.Authorization.CommandType'('DEACTIVATE', Bin, _TrUserData) -> <>; +'e_enum_CastFrame.Command.Authorization.CommandType'('ACTIVATE', Bin, _TrUserData) -> <>; +'e_enum_CastFrame.Command.Authorization.CommandType'(V, Bin, _TrUserData) -> e_varint(V, Bin). + -compile({nowarn_unused_function,e_type_sint/3}). e_type_sint(Value, Bin, _TrUserData) when Value >= 0 -> e_varint(Value * 2, Bin); e_type_sint(Value, Bin, _TrUserData) -> e_varint(Value * -2 - 1, Bin). @@ -1485,6 +1496,7 @@ decode_msg_2_doit('ReplyFrame.Error', Bin, TrUserData) -> id('decode_msg_ReplyFr decode_msg_2_doit('ReplyFrame', Bin, TrUserData) -> id(decode_msg_ReplyFrame(Bin, TrUserData), TrUserData); decode_msg_2_doit('CastFrame.Pub', Bin, TrUserData) -> id('decode_msg_CastFrame.Pub'(Bin, TrUserData), TrUserData); decode_msg_2_doit('CastFrame.Command', Bin, TrUserData) -> id('decode_msg_CastFrame.Command'(Bin, TrUserData), TrUserData); +decode_msg_2_doit('CastFrame.Command.Authorization', Bin, TrUserData) -> id('decode_msg_CastFrame.Command.Authorization'(Bin, TrUserData), TrUserData); decode_msg_2_doit('CastFrame.Data', Bin, TrUserData) -> id('decode_msg_CastFrame.Data'(Bin, TrUserData), TrUserData); decode_msg_2_doit('CastFrame.TaskEvent', Bin, TrUserData) -> id('decode_msg_CastFrame.TaskEvent'(Bin, TrUserData), TrUserData); decode_msg_2_doit('CastFrame', Bin, TrUserData) -> id(decode_msg_CastFrame(Bin, TrUserData), TrUserData); @@ -1838,56 +1850,102 @@ skip_64_ReplyFrame(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'skip_64_CastFrame.Pub'(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> 'dfp_read_field_def_CastFrame.Pub'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). -'decode_msg_CastFrame.Command'(Bin, TrUserData) -> 'dfp_read_field_def_CastFrame.Command'(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), TrUserData). +'decode_msg_CastFrame.Command'(Bin, TrUserData) -> 'dfp_read_field_def_CastFrame.Command'(Bin, 0, 0, 0, id(undefined, TrUserData), TrUserData). -'dfp_read_field_def_CastFrame.Command'(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'd_field_CastFrame.Command_command_type'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -'dfp_read_field_def_CastFrame.Command'(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'd_field_CastFrame.Command_command'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -'dfp_read_field_def_CastFrame.Command'(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'CastFrame.Command'{command_type = F@_1, command = F@_2}; -'dfp_read_field_def_CastFrame.Command'(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dg_read_field_def_CastFrame.Command'(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). +'dfp_read_field_def_CastFrame.Command'(<<10, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'd_field_CastFrame.Command_auth'(Rest, Z1, Z2, F, F@_1, TrUserData); +'dfp_read_field_def_CastFrame.Command'(<<>>, 0, 0, _, F@_1, _) -> #'CastFrame.Command'{command = F@_1}; +'dfp_read_field_def_CastFrame.Command'(Other, Z1, Z2, F, F@_1, TrUserData) -> 'dg_read_field_def_CastFrame.Command'(Other, Z1, Z2, F, F@_1, TrUserData). -'dg_read_field_def_CastFrame.Command'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> 'dg_read_field_def_CastFrame.Command'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -'dg_read_field_def_CastFrame.Command'(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> +'dg_read_field_def_CastFrame.Command'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 32 - 7 -> 'dg_read_field_def_CastFrame.Command'(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +'dg_read_field_def_CastFrame.Command'(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, TrUserData) -> Key = X bsl N + Acc, case Key of - 8 -> 'd_field_CastFrame.Command_command_type'(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); - 18 -> 'd_field_CastFrame.Command_command'(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + 10 -> 'd_field_CastFrame.Command_auth'(Rest, 0, 0, 0, F@_1, TrUserData); _ -> case Key band 7 of - 0 -> 'skip_varint_CastFrame.Command'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 1 -> 'skip_64_CastFrame.Command'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 2 -> 'skip_length_delimited_CastFrame.Command'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 3 -> 'skip_group_CastFrame.Command'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 5 -> 'skip_32_CastFrame.Command'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) + 0 -> 'skip_varint_CastFrame.Command'(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 1 -> 'skip_64_CastFrame.Command'(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 2 -> 'skip_length_delimited_CastFrame.Command'(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 3 -> 'skip_group_CastFrame.Command'(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 5 -> 'skip_32_CastFrame.Command'(Rest, 0, 0, Key bsr 3, F@_1, TrUserData) end end; -'dg_read_field_def_CastFrame.Command'(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'CastFrame.Command'{command_type = F@_1, command = F@_2}. +'dg_read_field_def_CastFrame.Command'(<<>>, 0, 0, _, F@_1, _) -> #'CastFrame.Command'{command = F@_1}. -'d_field_CastFrame.Command_command_type'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> 'd_field_CastFrame.Command_command_type'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -'d_field_CastFrame.Command_command_type'(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, TrUserData) -> - {NewFValue, RestF} = {begin <> = <<(X bsl N + Acc):32/unsigned-native>>, id(Res, TrUserData) end, Rest}, - 'dfp_read_field_def_CastFrame.Command'(RestF, 0, 0, F, NewFValue, F@_2, TrUserData). +'d_field_CastFrame.Command_auth'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> 'd_field_CastFrame.Command_auth'(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +'d_field_CastFrame.Command_auth'(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id('decode_msg_CastFrame.Command.Authorization'(Bs, TrUserData), TrUserData), Rest2} end, + 'dfp_read_field_def_CastFrame.Command'(RestF, + 0, + 0, + F, + case Prev of + undefined -> id({auth, NewFValue}, TrUserData); + {auth, MVPrev} -> id({auth, 'merge_msg_CastFrame.Command.Authorization'(MVPrev, NewFValue, TrUserData)}, TrUserData); + _ -> id({auth, NewFValue}, TrUserData) + end, + TrUserData). -'d_field_CastFrame.Command_command'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> 'd_field_CastFrame.Command_command'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -'d_field_CastFrame.Command_command'(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, TrUserData) -> - {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - 'dfp_read_field_def_CastFrame.Command'(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). +'skip_varint_CastFrame.Command'(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'skip_varint_CastFrame.Command'(Rest, Z1, Z2, F, F@_1, TrUserData); +'skip_varint_CastFrame.Command'(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'dfp_read_field_def_CastFrame.Command'(Rest, Z1, Z2, F, F@_1, TrUserData). -'skip_varint_CastFrame.Command'(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'skip_varint_CastFrame.Command'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -'skip_varint_CastFrame.Command'(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dfp_read_field_def_CastFrame.Command'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). - -'skip_length_delimited_CastFrame.Command'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> 'skip_length_delimited_CastFrame.Command'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -'skip_length_delimited_CastFrame.Command'(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) -> +'skip_length_delimited_CastFrame.Command'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> 'skip_length_delimited_CastFrame.Command'(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +'skip_length_delimited_CastFrame.Command'(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) -> Length = X bsl N + Acc, <<_:Length/binary, Rest2/binary>> = Rest, - 'dfp_read_field_def_CastFrame.Command'(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). + 'dfp_read_field_def_CastFrame.Command'(Rest2, 0, 0, F, F@_1, TrUserData). -'skip_group_CastFrame.Command'(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> +'skip_group_CastFrame.Command'(Bin, _, Z2, FNum, F@_1, TrUserData) -> {_, Rest} = read_group(Bin, FNum), - 'dfp_read_field_def_CastFrame.Command'(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). + 'dfp_read_field_def_CastFrame.Command'(Rest, 0, Z2, FNum, F@_1, TrUserData). -'skip_32_CastFrame.Command'(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dfp_read_field_def_CastFrame.Command'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). +'skip_32_CastFrame.Command'(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'dfp_read_field_def_CastFrame.Command'(Rest, Z1, Z2, F, F@_1, TrUserData). -'skip_64_CastFrame.Command'(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dfp_read_field_def_CastFrame.Command'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). +'skip_64_CastFrame.Command'(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'dfp_read_field_def_CastFrame.Command'(Rest, Z1, Z2, F, F@_1, TrUserData). + +'decode_msg_CastFrame.Command.Authorization'(Bin, TrUserData) -> 'dfp_read_field_def_CastFrame.Command.Authorization'(Bin, 0, 0, 0, id('DEACTIVATE', TrUserData), TrUserData). + +'dfp_read_field_def_CastFrame.Command.Authorization'(<<8, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'd_field_CastFrame.Command.Authorization_cmd'(Rest, Z1, Z2, F, F@_1, TrUserData); +'dfp_read_field_def_CastFrame.Command.Authorization'(<<>>, 0, 0, _, F@_1, _) -> #'CastFrame.Command.Authorization'{cmd = F@_1}; +'dfp_read_field_def_CastFrame.Command.Authorization'(Other, Z1, Z2, F, F@_1, TrUserData) -> 'dg_read_field_def_CastFrame.Command.Authorization'(Other, Z1, Z2, F, F@_1, TrUserData). + +'dg_read_field_def_CastFrame.Command.Authorization'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 32 - 7 -> 'dg_read_field_def_CastFrame.Command.Authorization'(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +'dg_read_field_def_CastFrame.Command.Authorization'(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 8 -> 'd_field_CastFrame.Command.Authorization_cmd'(Rest, 0, 0, 0, F@_1, TrUserData); + _ -> + case Key band 7 of + 0 -> 'skip_varint_CastFrame.Command.Authorization'(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 1 -> 'skip_64_CastFrame.Command.Authorization'(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 2 -> 'skip_length_delimited_CastFrame.Command.Authorization'(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 3 -> 'skip_group_CastFrame.Command.Authorization'(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 5 -> 'skip_32_CastFrame.Command.Authorization'(Rest, 0, 0, Key bsr 3, F@_1, TrUserData) + end + end; +'dg_read_field_def_CastFrame.Command.Authorization'(<<>>, 0, 0, _, F@_1, _) -> #'CastFrame.Command.Authorization'{cmd = F@_1}. + +'d_field_CastFrame.Command.Authorization_cmd'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> 'd_field_CastFrame.Command.Authorization_cmd'(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +'d_field_CastFrame.Command.Authorization_cmd'(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, TrUserData) -> + {NewFValue, RestF} = {id('d_enum_CastFrame.Command.Authorization.CommandType'(begin <> = <<(X bsl N + Acc):32/unsigned-native>>, id(Res, TrUserData) end), TrUserData), Rest}, + 'dfp_read_field_def_CastFrame.Command.Authorization'(RestF, 0, 0, F, NewFValue, TrUserData). + +'skip_varint_CastFrame.Command.Authorization'(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'skip_varint_CastFrame.Command.Authorization'(Rest, Z1, Z2, F, F@_1, TrUserData); +'skip_varint_CastFrame.Command.Authorization'(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'dfp_read_field_def_CastFrame.Command.Authorization'(Rest, Z1, Z2, F, F@_1, TrUserData). + +'skip_length_delimited_CastFrame.Command.Authorization'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> 'skip_length_delimited_CastFrame.Command.Authorization'(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +'skip_length_delimited_CastFrame.Command.Authorization'(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + 'dfp_read_field_def_CastFrame.Command.Authorization'(Rest2, 0, 0, F, F@_1, TrUserData). + +'skip_group_CastFrame.Command.Authorization'(Bin, _, Z2, FNum, F@_1, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + 'dfp_read_field_def_CastFrame.Command.Authorization'(Rest, 0, Z2, FNum, F@_1, TrUserData). + +'skip_32_CastFrame.Command.Authorization'(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'dfp_read_field_def_CastFrame.Command.Authorization'(Rest, Z1, Z2, F, F@_1, TrUserData). + +'skip_64_CastFrame.Command.Authorization'(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'dfp_read_field_def_CastFrame.Command.Authorization'(Rest, Z1, Z2, F, F@_1, TrUserData). 'decode_msg_CastFrame.Data'(Bin, TrUserData) -> 'dfp_read_field_def_CastFrame.Data'(Bin, 0, 0, 0, id(<<>>, TrUserData), id(<<>>, TrUserData), TrUserData). @@ -3677,6 +3735,10 @@ skip_64_Ulimit(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) - 'skip_64_map'(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dfp_read_field_def_map'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). +'d_enum_CastFrame.Command.Authorization.CommandType'(0) -> 'DEACTIVATE'; +'d_enum_CastFrame.Command.Authorization.CommandType'(1) -> 'ACTIVATE'; +'d_enum_CastFrame.Command.Authorization.CommandType'(V) -> V. + read_group(Bin, FieldNum) -> {NumBytes, EndTagLen} = read_gr_b(Bin, 0, 0, 0, 0, FieldNum), <> = Bin, @@ -3749,6 +3811,7 @@ merge_msgs(Prev, New, MsgName, Opts) -> 'ReplyFrame' -> merge_msg_ReplyFrame(Prev, New, TrUserData); 'CastFrame.Pub' -> 'merge_msg_CastFrame.Pub'(Prev, New, TrUserData); 'CastFrame.Command' -> 'merge_msg_CastFrame.Command'(Prev, New, TrUserData); + 'CastFrame.Command.Authorization' -> 'merge_msg_CastFrame.Command.Authorization'(Prev, New, TrUserData); 'CastFrame.Data' -> 'merge_msg_CastFrame.Data'(Prev, New, TrUserData); 'CastFrame.TaskEvent' -> 'merge_msg_CastFrame.TaskEvent'(Prev, New, TrUserData); 'CastFrame' -> merge_msg_CastFrame(Prev, New, TrUserData); @@ -3851,16 +3914,21 @@ merge_msg_ReplyFrame(#'ReplyFrame'{packet_id = PFpacket_id, reply = PFreply}, #' end}. -compile({nowarn_unused_function,'merge_msg_CastFrame.Command'/3}). -'merge_msg_CastFrame.Command'(#'CastFrame.Command'{command_type = PFcommand_type, command = PFcommand}, #'CastFrame.Command'{command_type = NFcommand_type, command = NFcommand}, _) -> - #'CastFrame.Command'{command_type = - if NFcommand_type =:= undefined -> PFcommand_type; - true -> NFcommand_type - end, - command = - if NFcommand =:= undefined -> PFcommand; - true -> NFcommand +'merge_msg_CastFrame.Command'(#'CastFrame.Command'{command = PFcommand}, #'CastFrame.Command'{command = NFcommand}, TrUserData) -> + #'CastFrame.Command'{command = + case {PFcommand, NFcommand} of + {{auth, OPFcommand}, {auth, ONFcommand}} -> {auth, 'merge_msg_CastFrame.Command.Authorization'(OPFcommand, ONFcommand, TrUserData)}; + {_, undefined} -> PFcommand; + _ -> NFcommand end}. +-compile({nowarn_unused_function,'merge_msg_CastFrame.Command.Authorization'/3}). +'merge_msg_CastFrame.Command.Authorization'(#'CastFrame.Command.Authorization'{cmd = PFcmd}, #'CastFrame.Command.Authorization'{cmd = NFcmd}, _) -> + #'CastFrame.Command.Authorization'{cmd = + if NFcmd =:= undefined -> PFcmd; + true -> NFcmd + end}. + -compile({nowarn_unused_function,'merge_msg_CastFrame.Data'/3}). 'merge_msg_CastFrame.Data'(#'CastFrame.Data'{route_key = PFroute_key, metric = PFmetric}, #'CastFrame.Data'{route_key = NFroute_key, metric = NFmetric}, _) -> #'CastFrame.Data'{route_key = @@ -4280,6 +4348,7 @@ verify_msg(Msg, MsgName, Opts) -> 'ReplyFrame' -> v_msg_ReplyFrame(Msg, [MsgName], TrUserData); 'CastFrame.Pub' -> 'v_msg_CastFrame.Pub'(Msg, [MsgName], TrUserData); 'CastFrame.Command' -> 'v_msg_CastFrame.Command'(Msg, [MsgName], TrUserData); + 'CastFrame.Command.Authorization' -> 'v_msg_CastFrame.Command.Authorization'(Msg, [MsgName], TrUserData); 'CastFrame.Data' -> 'v_msg_CastFrame.Data'(Msg, [MsgName], TrUserData); 'CastFrame.TaskEvent' -> 'v_msg_CastFrame.TaskEvent'(Msg, [MsgName], TrUserData); 'CastFrame' -> v_msg_CastFrame(Msg, [MsgName], TrUserData); @@ -4403,16 +4472,28 @@ v_msg_ReplyFrame(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'ReplyFra -compile({nowarn_unused_function,'v_msg_CastFrame.Command'/3}). -dialyzer({nowarn_function,'v_msg_CastFrame.Command'/3}). -'v_msg_CastFrame.Command'(#'CastFrame.Command'{command_type = F1, command = F2}, Path, TrUserData) -> - if F1 == undefined -> ok; - true -> v_type_int32(F1, [command_type | Path], TrUserData) - end, - if F2 == undefined -> ok; - true -> v_type_bytes(F2, [command | Path], TrUserData) +'v_msg_CastFrame.Command'(#'CastFrame.Command'{command = F1}, Path, TrUserData) -> + case F1 of + undefined -> ok; + {auth, OF1} -> 'v_submsg_CastFrame.Command.Authorization'(OF1, [auth, command | Path], TrUserData); + _ -> mk_type_error(invalid_oneof, F1, [command | Path]) end, ok; 'v_msg_CastFrame.Command'(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'CastFrame.Command'}, X, Path). +-compile({nowarn_unused_function,'v_submsg_CastFrame.Command.Authorization'/3}). +-dialyzer({nowarn_function,'v_submsg_CastFrame.Command.Authorization'/3}). +'v_submsg_CastFrame.Command.Authorization'(Msg, Path, TrUserData) -> 'v_msg_CastFrame.Command.Authorization'(Msg, Path, TrUserData). + +-compile({nowarn_unused_function,'v_msg_CastFrame.Command.Authorization'/3}). +-dialyzer({nowarn_function,'v_msg_CastFrame.Command.Authorization'/3}). +'v_msg_CastFrame.Command.Authorization'(#'CastFrame.Command.Authorization'{cmd = F1}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> 'v_enum_CastFrame.Command.Authorization.CommandType'(F1, [cmd | Path], TrUserData) + end, + ok; +'v_msg_CastFrame.Command.Authorization'(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'CastFrame.Command.Authorization'}, X, Path). + -compile({nowarn_unused_function,'v_submsg_CastFrame.Data'/3}). -dialyzer({nowarn_function,'v_submsg_CastFrame.Data'/3}). 'v_submsg_CastFrame.Data'(Msg, Path, TrUserData) -> 'v_msg_CastFrame.Data'(Msg, Path, TrUserData). @@ -4884,6 +4965,13 @@ v_msg_Ulimit(#'Ulimit'{name = F1, soft = F2, hard = F3}, Path, TrUserData) -> ok; v_msg_Ulimit(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'Ulimit'}, X, Path). +-compile({nowarn_unused_function,'v_enum_CastFrame.Command.Authorization.CommandType'/3}). +-dialyzer({nowarn_function,'v_enum_CastFrame.Command.Authorization.CommandType'/3}). +'v_enum_CastFrame.Command.Authorization.CommandType'('DEACTIVATE', _Path, _TrUserData) -> ok; +'v_enum_CastFrame.Command.Authorization.CommandType'('ACTIVATE', _Path, _TrUserData) -> ok; +'v_enum_CastFrame.Command.Authorization.CommandType'(V, _Path, _TrUserData) when -2147483648 =< V, V =< 2147483647, is_integer(V) -> ok; +'v_enum_CastFrame.Command.Authorization.CommandType'(X, Path, _TrUserData) -> mk_type_error({invalid_enum, 'CastFrame.Command.Authorization.CommandType'}, X, Path). + -compile({nowarn_unused_function,v_type_int32/3}). -dialyzer({nowarn_function,v_type_int32/3}). v_type_int32(N, _Path, _TrUserData) when is_integer(N), -2147483648 =< N, N =< 2147483647 -> ok; @@ -5045,7 +5133,8 @@ mt_merge_maptuples_r(L1, L2) -> dict:to_list(dict:merge(fun (_Key, _V1, V2) -> V get_msg_defs() -> - [{{msg, 'RequestFrame'}, + [{{enum, 'CastFrame.Command.Authorization.CommandType'}, [{'DEACTIVATE', 0}, {'ACTIVATE', 1}]}, + {{msg, 'RequestFrame'}, [#field{name = packet_id, fnum = 1, rnum = 2, type = uint32, occurrence = optional, opts = []}, #gpb_oneof{name = body, rnum = 3, fields = [#field{name = auth_request, fnum = 10, rnum = 3, type = {msg, 'AuthRequest'}, occurrence = optional, opts = []}, #field{name = container_request, fnum = 11, rnum = 3, type = {msg, 'ContainerRequest'}, occurrence = optional, opts = []}], @@ -5065,7 +5154,8 @@ get_msg_defs() -> [#field{name = topic, fnum = 1, rnum = 2, type = bytes, occurrence = optional, opts = []}, #field{name = qos, fnum = 2, rnum = 3, type = int32, occurrence = optional, opts = []}, #field{name = content, fnum = 3, rnum = 4, type = bytes, occurrence = optional, opts = []}]}, - {{msg, 'CastFrame.Command'}, [#field{name = command_type, fnum = 1, rnum = 2, type = int32, occurrence = optional, opts = []}, #field{name = command, fnum = 2, rnum = 3, type = bytes, occurrence = optional, opts = []}]}, + {{msg, 'CastFrame.Command'}, [#gpb_oneof{name = command, rnum = 2, fields = [#field{name = auth, fnum = 1, rnum = 2, type = {msg, 'CastFrame.Command.Authorization'}, occurrence = optional, opts = []}], opts = []}]}, + {{msg, 'CastFrame.Command.Authorization'}, [#field{name = cmd, fnum = 1, rnum = 2, type = {enum, 'CastFrame.Command.Authorization.CommandType'}, occurrence = optional, opts = []}]}, {{msg, 'CastFrame.Data'}, [#field{name = route_key, fnum = 1, rnum = 2, type = bytes, occurrence = optional, opts = []}, #field{name = metric, fnum = 2, rnum = 3, type = bytes, occurrence = optional, opts = []}]}, {{msg, 'CastFrame.TaskEvent'}, [#field{name = task_id, fnum = 1, rnum = 2, type = int32, occurrence = optional, opts = []}, @@ -5163,6 +5253,7 @@ get_msg_names() -> 'ReplyFrame', 'CastFrame.Pub', 'CastFrame.Command', + 'CastFrame.Command.Authorization', 'CastFrame.Data', 'CastFrame.TaskEvent', 'CastFrame', @@ -5198,6 +5289,7 @@ get_msg_or_group_names() -> 'ReplyFrame', 'CastFrame.Pub', 'CastFrame.Command', + 'CastFrame.Command.Authorization', 'CastFrame.Data', 'CastFrame.TaskEvent', 'CastFrame', @@ -5223,7 +5315,7 @@ get_msg_or_group_names() -> 'Ulimit']. -get_enum_names() -> []. +get_enum_names() -> ['CastFrame.Command.Authorization.CommandType']. fetch_msg_def(MsgName) -> @@ -5233,8 +5325,11 @@ fetch_msg_def(MsgName) -> end. --spec fetch_enum_def(_) -> no_return(). -fetch_enum_def(EnumName) -> erlang:error({no_such_enum, EnumName}). +fetch_enum_def(EnumName) -> + case find_enum_def(EnumName) of + Es when is_list(Es) -> Es; + error -> erlang:error({no_such_enum, EnumName}) + end. find_msg_def('RequestFrame') -> @@ -5257,7 +5352,8 @@ find_msg_def('CastFrame.Pub') -> [#field{name = topic, fnum = 1, rnum = 2, type = bytes, occurrence = optional, opts = []}, #field{name = qos, fnum = 2, rnum = 3, type = int32, occurrence = optional, opts = []}, #field{name = content, fnum = 3, rnum = 4, type = bytes, occurrence = optional, opts = []}]; -find_msg_def('CastFrame.Command') -> [#field{name = command_type, fnum = 1, rnum = 2, type = int32, occurrence = optional, opts = []}, #field{name = command, fnum = 2, rnum = 3, type = bytes, occurrence = optional, opts = []}]; +find_msg_def('CastFrame.Command') -> [#gpb_oneof{name = command, rnum = 2, fields = [#field{name = auth, fnum = 1, rnum = 2, type = {msg, 'CastFrame.Command.Authorization'}, occurrence = optional, opts = []}], opts = []}]; +find_msg_def('CastFrame.Command.Authorization') -> [#field{name = cmd, fnum = 1, rnum = 2, type = {enum, 'CastFrame.Command.Authorization.CommandType'}, occurrence = optional, opts = []}]; find_msg_def('CastFrame.Data') -> [#field{name = route_key, fnum = 1, rnum = 2, type = bytes, occurrence = optional, opts = []}, #field{name = metric, fnum = 2, rnum = 3, type = bytes, occurrence = optional, opts = []}]; find_msg_def('CastFrame.TaskEvent') -> [#field{name = task_id, fnum = 1, rnum = 2, type = int32, occurrence = optional, opts = []}, @@ -5350,17 +5446,23 @@ find_msg_def('Ulimit') -> find_msg_def(_) -> error. +find_enum_def('CastFrame.Command.Authorization.CommandType') -> [{'DEACTIVATE', 0}, {'ACTIVATE', 1}]; find_enum_def(_) -> error. --spec enum_symbol_by_value(_, _) -> no_return(). -enum_symbol_by_value(E, V) -> erlang:error({no_enum_defs, E, V}). +enum_symbol_by_value('CastFrame.Command.Authorization.CommandType', Value) -> 'enum_symbol_by_value_CastFrame.Command.Authorization.CommandType'(Value). --spec enum_value_by_symbol(_, _) -> no_return(). -enum_value_by_symbol(E, V) -> erlang:error({no_enum_defs, E, V}). +enum_value_by_symbol('CastFrame.Command.Authorization.CommandType', Sym) -> 'enum_value_by_symbol_CastFrame.Command.Authorization.CommandType'(Sym). +'enum_symbol_by_value_CastFrame.Command.Authorization.CommandType'(0) -> 'DEACTIVATE'; +'enum_symbol_by_value_CastFrame.Command.Authorization.CommandType'(1) -> 'ACTIVATE'. + + +'enum_value_by_symbol_CastFrame.Command.Authorization.CommandType'('DEACTIVATE') -> 0; +'enum_value_by_symbol_CastFrame.Command.Authorization.CommandType'('ACTIVATE') -> 1. + get_service_names() -> []. @@ -5411,6 +5513,7 @@ fqbin_to_msg_name(<<"ReplyFrame.Error">>) -> 'ReplyFrame.Error'; fqbin_to_msg_name(<<"ReplyFrame">>) -> 'ReplyFrame'; fqbin_to_msg_name(<<"CastFrame.Pub">>) -> 'CastFrame.Pub'; fqbin_to_msg_name(<<"CastFrame.Command">>) -> 'CastFrame.Command'; +fqbin_to_msg_name(<<"CastFrame.Command.Authorization">>) -> 'CastFrame.Command.Authorization'; fqbin_to_msg_name(<<"CastFrame.Data">>) -> 'CastFrame.Data'; fqbin_to_msg_name(<<"CastFrame.TaskEvent">>) -> 'CastFrame.TaskEvent'; fqbin_to_msg_name(<<"CastFrame">>) -> 'CastFrame'; @@ -5443,6 +5546,7 @@ msg_name_to_fqbin('ReplyFrame.Error') -> <<"ReplyFrame.Error">>; msg_name_to_fqbin('ReplyFrame') -> <<"ReplyFrame">>; msg_name_to_fqbin('CastFrame.Pub') -> <<"CastFrame.Pub">>; msg_name_to_fqbin('CastFrame.Command') -> <<"CastFrame.Command">>; +msg_name_to_fqbin('CastFrame.Command.Authorization') -> <<"CastFrame.Command.Authorization">>; msg_name_to_fqbin('CastFrame.Data') -> <<"CastFrame.Data">>; msg_name_to_fqbin('CastFrame.TaskEvent') -> <<"CastFrame.TaskEvent">>; msg_name_to_fqbin('CastFrame') -> <<"CastFrame">>; @@ -5469,11 +5573,11 @@ msg_name_to_fqbin('Ulimit') -> <<"Ulimit">>; msg_name_to_fqbin(E) -> error({gpb_error, {badmsg, E}}). --spec fqbin_to_enum_name(_) -> no_return(). +fqbin_to_enum_name(<<"CastFrame.Command.Authorization.CommandType">>) -> 'CastFrame.Command.Authorization.CommandType'; fqbin_to_enum_name(E) -> error({gpb_error, {badenum, E}}). --spec enum_name_to_fqbin(_) -> no_return(). +enum_name_to_fqbin('CastFrame.Command.Authorization.CommandType') -> <<"CastFrame.Command.Authorization.CommandType">>; enum_name_to_fqbin(E) -> error({gpb_error, {badenum, E}}). @@ -5504,7 +5608,7 @@ get_all_source_basenames() -> ["message.proto", "docker.proto"]. get_all_proto_names() -> ["message", "docker"]. -get_msg_containment("message") -> ['AuthRequest', 'CastFrame', 'CastFrame.Command', 'CastFrame.Data', 'CastFrame.Pub', 'CastFrame.TaskEvent', 'ReplyFrame', 'ReplyFrame.Error', 'RequestFrame']; +get_msg_containment("message") -> ['AuthRequest', 'CastFrame', 'CastFrame.Command', 'CastFrame.Command.Authorization', 'CastFrame.Data', 'CastFrame.Pub', 'CastFrame.TaskEvent', 'ReplyFrame', 'ReplyFrame.Error', 'RequestFrame']; get_msg_containment("docker") -> ['ContainerDeployParams', 'ContainerRef', @@ -5544,7 +5648,7 @@ get_rpc_containment("docker") -> []; get_rpc_containment(P) -> error({gpb_error, {badproto, P}}). -get_enum_containment("message") -> []; +get_enum_containment("message") -> ['CastFrame.Command.Authorization.CommandType']; get_enum_containment("docker") -> []; get_enum_containment(P) -> error({gpb_error, {badproto, P}}). @@ -5578,6 +5682,7 @@ get_proto_by_msg_name_as_fqbin(<<"RestartPolicy">>) -> "docker"; get_proto_by_msg_name_as_fqbin(<<"ContainerRequest.Deploy">>) -> "docker"; get_proto_by_msg_name_as_fqbin(<<"Healthcheck">>) -> "docker"; get_proto_by_msg_name_as_fqbin(<<"ContainerRequest.Kill">>) -> "docker"; +get_proto_by_msg_name_as_fqbin(<<"CastFrame.Command.Authorization">>) -> "message"; get_proto_by_msg_name_as_fqbin(E) -> error({gpb_error, {badmsg, E}}). @@ -5585,7 +5690,7 @@ get_proto_by_msg_name_as_fqbin(E) -> error({gpb_error, {badmsg, E}}). get_proto_by_service_name_as_fqbin(E) -> error({gpb_error, {badservice, E}}). --spec get_proto_by_enum_name_as_fqbin(_) -> no_return(). +get_proto_by_enum_name_as_fqbin(<<"CastFrame.Command.Authorization.CommandType">>) -> "message"; get_proto_by_enum_name_as_fqbin(E) -> error({gpb_error, {badenum, E}}). diff --git a/src/transport/tcp/ssl_channel.erl b/src/transport/tcp/ssl_channel.erl index 11d2413..6690e43 100644 --- a/src/transport/tcp/ssl_channel.erl +++ b/src/transport/tcp/ssl_channel.erl @@ -16,7 +16,7 @@ -define(INFLIGHT_TIMEOUT, 60000). %% API --export([pub/4, container_call/3, cancel_request_call/2, command/3]). +-export([pub/4, container_call/3, cancel_request_call/2, command/2]). -export([start_link/3, stop/2]). %% gen_server callbacks @@ -48,9 +48,9 @@ pub(Pid, Topic, Qos, Content) when is_pid(Pid), is_binary(Topic), is_integer(Qos gen_server:cast(Pid, {pub, Topic, Qos, Content}). %% 向通道中写入消息 --spec command(Pid :: pid(), CommandType :: integer(), Command :: binary()) -> no_return(). -command(Pid, CommandType, Command) when is_pid(Pid), is_integer(CommandType), is_binary(Command) -> - gen_server:cast(Pid, {command, CommandType, Command}). +-spec command(Pid :: pid(), Command :: message_pb:'CastFrame.Command'()) -> no_return(). +command(Pid, Command) when is_pid(Pid) -> + gen_server:cast(Pid, {command, Command}). -spec container_call(Pid :: pid(), ReceiverPid :: pid(), Request :: message_pb:'ContainerRequest'()) -> Ref :: reference(). container_call(Pid, ReceiverPid, Request) when is_pid(Pid), is_pid(ReceiverPid), is_record(Request, 'ContainerRequest') -> @@ -104,9 +104,9 @@ handle_cast({pub, Topic, Qos, Content}, State = #state{transport = Transport, so {noreply, State}; %% 发送Command消息 -handle_cast({command, CommandType, Command}, State = #state{transport = Transport, socket = Socket}) -> +handle_cast({command, Command}, State = #state{transport = Transport, socket = Socket}) -> Encoded = message_pb:encode_msg(#'CastFrame'{ - body = {command, #'CastFrame.Command'{command_type = CommandType, command = Command}} + body = Command }), Transport:send(Socket, <>), {noreply, State};