Packages

An Erlang library for processing multiple Kinesis and DynamoDB streams and shards in a single node using the Kinesis Client Library and MultiLangDaemon.

Current section

Files

Jump to
erlmld src kpl_agg_pb.erl
Raw

src/kpl_agg_pb.erl

%% -*- coding: utf-8 -*-
%% Automatically generated, do not edit
%% Generated by gpb_compile version 3.26.5
-module(kpl_agg_pb).
-export([encode_msg/1, encode_msg/2]).
-export([decode_msg/2, decode_msg/3]).
-export([merge_msgs/2, merge_msgs/3]).
-export([verify_msg/1, verify_msg/2]).
-export([get_msg_defs/0]).
-export([get_msg_names/0]).
-export([get_enum_names/0]).
-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([get_service_names/0]).
-export([get_service_def/1]).
-export([get_rpc_names/1]).
-export([find_rpc_def/2, fetch_rpc_def/2]).
-export([get_package_name/0]).
-export([gpb_version_as_string/0, gpb_version_as_list/0]).
-include("kpl_agg_pb.hrl").
-include("gpb.hrl").
%% enumerated types
-export_type([]).
%% message types
-type 'Tag'() :: #'Tag'{}.
-type 'Record'() :: #'Record'{}.
-type 'AggregatedRecord'() :: #'AggregatedRecord'{}.
-export_type(['Tag'/0, 'Record'/0, 'AggregatedRecord'/0]).
-spec encode_msg(_) -> binary().
encode_msg(Msg) -> encode_msg(Msg, []).
-spec encode_msg(_, list()) -> binary().
encode_msg(Msg, Opts) ->
case proplists:get_bool(verify, Opts) of
true -> verify_msg(Msg, Opts);
false -> ok
end,
TrUserData = proplists:get_value(user_data, Opts),
case Msg of
#'Tag'{} -> e_msg_Tag(Msg, TrUserData);
#'Record'{} -> e_msg_Record(Msg, TrUserData);
#'AggregatedRecord'{} ->
e_msg_AggregatedRecord(Msg, TrUserData)
end.
e_msg_Tag(Msg, TrUserData) ->
e_msg_Tag(Msg, <<>>, TrUserData).
e_msg_Tag(#'Tag'{key = F1, value = F2}, Bin,
TrUserData) ->
B1 = begin
TrF1 = id(F1, TrUserData),
e_type_string(TrF1, <<Bin/binary, 10>>)
end,
if F2 == undefined -> B1;
true ->
begin
TrF2 = id(F2, TrUserData),
e_type_string(TrF2, <<B1/binary, 18>>)
end
end.
e_msg_Record(Msg, TrUserData) ->
e_msg_Record(Msg, <<>>, TrUserData).
e_msg_Record(#'Record'{partition_key_index = F1,
explicit_hash_key_index = F2, data = F3, tags = F4},
Bin, TrUserData) ->
B1 = begin
TrF1 = id(F1, TrUserData),
e_varint(TrF1, <<Bin/binary, 8>>)
end,
B2 = if F2 == undefined -> B1;
true ->
begin
TrF2 = id(F2, TrUserData),
e_varint(TrF2, <<B1/binary, 16>>)
end
end,
B3 = begin
TrF3 = id(F3, TrUserData),
e_type_bytes(TrF3, <<B2/binary, 26>>)
end,
begin
TrF4 = id(F4, TrUserData),
if TrF4 == [] -> B3;
true -> e_field_Record_tags(TrF4, B3, TrUserData)
end
end.
e_msg_AggregatedRecord(Msg, TrUserData) ->
e_msg_AggregatedRecord(Msg, <<>>, TrUserData).
e_msg_AggregatedRecord(#'AggregatedRecord'{partition_key_table
= F1,
explicit_hash_key_table = F2,
records = F3},
Bin, TrUserData) ->
B1 = begin
TrF1 = id(F1, TrUserData),
if TrF1 == [] -> Bin;
true ->
e_field_AggregatedRecord_partition_key_table(TrF1, Bin,
TrUserData)
end
end,
B2 = begin
TrF2 = id(F2, TrUserData),
if TrF2 == [] -> B1;
true ->
e_field_AggregatedRecord_explicit_hash_key_table(TrF2,
B1,
TrUserData)
end
end,
begin
TrF3 = id(F3, TrUserData),
if TrF3 == [] -> B2;
true ->
e_field_AggregatedRecord_records(TrF3, B2, TrUserData)
end
end.
e_mfield_Record_tags(Msg, Bin, TrUserData) ->
SubBin = e_msg_Tag(Msg, <<>>, TrUserData),
Bin2 = e_varint(byte_size(SubBin), Bin),
<<Bin2/binary, SubBin/binary>>.
e_field_Record_tags([Elem | Rest], Bin, TrUserData) ->
Bin2 = <<Bin/binary, 34>>,
Bin3 = e_mfield_Record_tags(id(Elem, TrUserData), Bin2,
TrUserData),
e_field_Record_tags(Rest, Bin3, TrUserData);
e_field_Record_tags([], Bin, _TrUserData) -> Bin.
e_field_AggregatedRecord_partition_key_table([Elem
| Rest],
Bin, TrUserData) ->
Bin2 = <<Bin/binary, 10>>,
Bin3 = e_type_string(id(Elem, TrUserData), Bin2),
e_field_AggregatedRecord_partition_key_table(Rest, Bin3,
TrUserData);
e_field_AggregatedRecord_partition_key_table([], Bin,
_TrUserData) ->
Bin.
e_field_AggregatedRecord_explicit_hash_key_table([Elem
| Rest],
Bin, TrUserData) ->
Bin2 = <<Bin/binary, 18>>,
Bin3 = e_type_string(id(Elem, TrUserData), Bin2),
e_field_AggregatedRecord_explicit_hash_key_table(Rest,
Bin3, TrUserData);
e_field_AggregatedRecord_explicit_hash_key_table([],
Bin, _TrUserData) ->
Bin.
e_mfield_AggregatedRecord_records(Msg, Bin,
TrUserData) ->
SubBin = e_msg_Record(Msg, <<>>, TrUserData),
Bin2 = e_varint(byte_size(SubBin), Bin),
<<Bin2/binary, SubBin/binary>>.
e_field_AggregatedRecord_records([Elem | Rest], Bin,
TrUserData) ->
Bin2 = <<Bin/binary, 26>>,
Bin3 = e_mfield_AggregatedRecord_records(id(Elem,
TrUserData),
Bin2, TrUserData),
e_field_AggregatedRecord_records(Rest, Bin3,
TrUserData);
e_field_AggregatedRecord_records([], Bin,
_TrUserData) ->
Bin.
e_type_string(S, Bin) ->
Utf8 = unicode:characters_to_binary(S),
Bin2 = e_varint(byte_size(Utf8), Bin),
<<Bin2/binary, Utf8/binary>>.
e_type_bytes(Bytes, Bin) when is_binary(Bytes) ->
Bin2 = e_varint(byte_size(Bytes), Bin),
<<Bin2/binary, Bytes/binary>>;
e_type_bytes(Bytes, Bin) when is_list(Bytes) ->
BytesBin = iolist_to_binary(Bytes),
Bin2 = e_varint(byte_size(BytesBin), Bin),
<<Bin2/binary, BytesBin/binary>>.
e_varint(N, Bin) when N =< 127 -> <<Bin/binary, N>>;
e_varint(N, Bin) ->
Bin2 = <<Bin/binary, (N band 127 bor 128)>>,
e_varint(N bsr 7, Bin2).
decode_msg(Bin, MsgName) when is_binary(Bin) ->
decode_msg(Bin, MsgName, []).
decode_msg(Bin, MsgName, Opts) when is_binary(Bin) ->
TrUserData = proplists:get_value(user_data, Opts),
case MsgName of
'Tag' -> d_msg_Tag(Bin, TrUserData);
'Record' -> d_msg_Record(Bin, TrUserData);
'AggregatedRecord' ->
d_msg_AggregatedRecord(Bin, TrUserData)
end.
d_msg_Tag(Bin, TrUserData) ->
dfp_read_field_def_Tag(Bin, 0, 0,
id(undefined, TrUserData), id(undefined, TrUserData),
TrUserData).
dfp_read_field_def_Tag(<<10, Rest/binary>>, Z1, Z2, F1,
F2, TrUserData) ->
d_field_Tag_key(Rest, Z1, Z2, F1, F2, TrUserData);
dfp_read_field_def_Tag(<<18, Rest/binary>>, Z1, Z2, F1,
F2, TrUserData) ->
d_field_Tag_value(Rest, Z1, Z2, F1, F2, TrUserData);
dfp_read_field_def_Tag(<<>>, 0, 0, F1, F2, _) ->
#'Tag'{key = F1, value = F2};
dfp_read_field_def_Tag(Other, Z1, Z2, F1, F2,
TrUserData) ->
dg_read_field_def_Tag(Other, Z1, Z2, F1, F2,
TrUserData).
dg_read_field_def_Tag(<<1:1, X:7, Rest/binary>>, N, Acc,
F1, F2, TrUserData)
when N < 32 - 7 ->
dg_read_field_def_Tag(Rest, N + 7, X bsl N + Acc, F1,
F2, TrUserData);
dg_read_field_def_Tag(<<0:1, X:7, Rest/binary>>, N, Acc,
F1, F2, TrUserData) ->
Key = X bsl N + Acc,
case Key of
10 -> d_field_Tag_key(Rest, 0, 0, F1, F2, TrUserData);
18 -> d_field_Tag_value(Rest, 0, 0, F1, F2, TrUserData);
_ ->
case Key band 7 of
0 -> skip_varint_Tag(Rest, 0, 0, F1, F2, TrUserData);
1 -> skip_64_Tag(Rest, 0, 0, F1, F2, TrUserData);
2 ->
skip_length_delimited_Tag(Rest, 0, 0, F1, F2,
TrUserData);
5 -> skip_32_Tag(Rest, 0, 0, F1, F2, TrUserData)
end
end;
dg_read_field_def_Tag(<<>>, 0, 0, F1, F2, _) ->
#'Tag'{key = F1, value = F2}.
d_field_Tag_key(<<1:1, X:7, Rest/binary>>, N, Acc, F1,
F2, TrUserData)
when N < 57 ->
d_field_Tag_key(Rest, N + 7, X bsl N + Acc, F1, F2,
TrUserData);
d_field_Tag_key(<<0:1, X:7, Rest/binary>>, N, Acc, _,
F2, TrUserData) ->
Len = X bsl N + Acc,
<<Bytes:Len/binary, Rest2/binary>> = Rest,
NewFValue = binary:copy(Bytes),
dfp_read_field_def_Tag(Rest2, 0, 0, NewFValue, F2,
TrUserData).
d_field_Tag_value(<<1:1, X:7, Rest/binary>>, N, Acc, F1,
F2, TrUserData)
when N < 57 ->
d_field_Tag_value(Rest, N + 7, X bsl N + Acc, F1, F2,
TrUserData);
d_field_Tag_value(<<0:1, X:7, Rest/binary>>, N, Acc, F1,
_, TrUserData) ->
Len = X bsl N + Acc,
<<Bytes:Len/binary, Rest2/binary>> = Rest,
NewFValue = binary:copy(Bytes),
dfp_read_field_def_Tag(Rest2, 0, 0, F1, NewFValue,
TrUserData).
skip_varint_Tag(<<1:1, _:7, Rest/binary>>, Z1, Z2, F1,
F2, TrUserData) ->
skip_varint_Tag(Rest, Z1, Z2, F1, F2, TrUserData);
skip_varint_Tag(<<0:1, _:7, Rest/binary>>, Z1, Z2, F1,
F2, TrUserData) ->
dfp_read_field_def_Tag(Rest, Z1, Z2, F1, F2,
TrUserData).
skip_length_delimited_Tag(<<1:1, X:7, Rest/binary>>, N,
Acc, F1, F2, TrUserData)
when N < 57 ->
skip_length_delimited_Tag(Rest, N + 7, X bsl N + Acc,
F1, F2, TrUserData);
skip_length_delimited_Tag(<<0:1, X:7, Rest/binary>>, N,
Acc, F1, F2, TrUserData) ->
Length = X bsl N + Acc,
<<_:Length/binary, Rest2/binary>> = Rest,
dfp_read_field_def_Tag(Rest2, 0, 0, F1, F2, TrUserData).
skip_32_Tag(<<_:32, Rest/binary>>, Z1, Z2, F1, F2,
TrUserData) ->
dfp_read_field_def_Tag(Rest, Z1, Z2, F1, F2,
TrUserData).
skip_64_Tag(<<_:64, Rest/binary>>, Z1, Z2, F1, F2,
TrUserData) ->
dfp_read_field_def_Tag(Rest, Z1, Z2, F1, F2,
TrUserData).
d_msg_Record(Bin, TrUserData) ->
dfp_read_field_def_Record(Bin, 0, 0,
id(undefined, TrUserData),
id(undefined, TrUserData),
id(undefined, TrUserData), id([], TrUserData),
TrUserData).
dfp_read_field_def_Record(<<8, Rest/binary>>, Z1, Z2,
F1, F2, F3, F4, TrUserData) ->
d_field_Record_partition_key_index(Rest, Z1, Z2, F1, F2,
F3, F4, TrUserData);
dfp_read_field_def_Record(<<16, Rest/binary>>, Z1, Z2,
F1, F2, F3, F4, TrUserData) ->
d_field_Record_explicit_hash_key_index(Rest, Z1, Z2, F1,
F2, F3, F4, TrUserData);
dfp_read_field_def_Record(<<26, Rest/binary>>, Z1, Z2,
F1, F2, F3, F4, TrUserData) ->
d_field_Record_data(Rest, Z1, Z2, F1, F2, F3, F4,
TrUserData);
dfp_read_field_def_Record(<<34, Rest/binary>>, Z1, Z2,
F1, F2, F3, F4, TrUserData) ->
d_field_Record_tags(Rest, Z1, Z2, F1, F2, F3, F4,
TrUserData);
dfp_read_field_def_Record(<<>>, 0, 0, F1, F2, F3, F4,
TrUserData) ->
#'Record'{partition_key_index = F1,
explicit_hash_key_index = F2, data = F3,
tags = lists_reverse(F4, TrUserData)};
dfp_read_field_def_Record(Other, Z1, Z2, F1, F2, F3, F4,
TrUserData) ->
dg_read_field_def_Record(Other, Z1, Z2, F1, F2, F3, F4,
TrUserData).
dg_read_field_def_Record(<<1:1, X:7, Rest/binary>>, N,
Acc, F1, F2, F3, F4, TrUserData)
when N < 32 - 7 ->
dg_read_field_def_Record(Rest, N + 7, X bsl N + Acc, F1,
F2, F3, F4, TrUserData);
dg_read_field_def_Record(<<0:1, X:7, Rest/binary>>, N,
Acc, F1, F2, F3, F4, TrUserData) ->
Key = X bsl N + Acc,
case Key of
8 ->
d_field_Record_partition_key_index(Rest, 0, 0, F1, F2,
F3, F4, TrUserData);
16 ->
d_field_Record_explicit_hash_key_index(Rest, 0, 0, F1,
F2, F3, F4, TrUserData);
26 ->
d_field_Record_data(Rest, 0, 0, F1, F2, F3, F4,
TrUserData);
34 ->
d_field_Record_tags(Rest, 0, 0, F1, F2, F3, F4,
TrUserData);
_ ->
case Key band 7 of
0 ->
skip_varint_Record(Rest, 0, 0, F1, F2, F3, F4,
TrUserData);
1 ->
skip_64_Record(Rest, 0, 0, F1, F2, F3, F4, TrUserData);
2 ->
skip_length_delimited_Record(Rest, 0, 0, F1, F2, F3, F4,
TrUserData);
5 ->
skip_32_Record(Rest, 0, 0, F1, F2, F3, F4, TrUserData)
end
end;
dg_read_field_def_Record(<<>>, 0, 0, F1, F2, F3, F4,
TrUserData) ->
#'Record'{partition_key_index = F1,
explicit_hash_key_index = F2, data = F3,
tags = lists_reverse(F4, TrUserData)}.
d_field_Record_partition_key_index(<<1:1, X:7,
Rest/binary>>,
N, Acc, F1, F2, F3, F4, TrUserData)
when N < 57 ->
d_field_Record_partition_key_index(Rest, N + 7,
X bsl N + Acc, F1, F2, F3, F4,
TrUserData);
d_field_Record_partition_key_index(<<0:1, X:7,
Rest/binary>>,
N, Acc, _, F2, F3, F4, TrUserData) ->
NewFValue = X bsl N + Acc,
dfp_read_field_def_Record(Rest, 0, 0, NewFValue, F2, F3,
F4, TrUserData).
d_field_Record_explicit_hash_key_index(<<1:1, X:7,
Rest/binary>>,
N, Acc, F1, F2, F3, F4, TrUserData)
when N < 57 ->
d_field_Record_explicit_hash_key_index(Rest, N + 7,
X bsl N + Acc, F1, F2, F3, F4,
TrUserData);
d_field_Record_explicit_hash_key_index(<<0:1, X:7,
Rest/binary>>,
N, Acc, F1, _, F3, F4, TrUserData) ->
NewFValue = X bsl N + Acc,
dfp_read_field_def_Record(Rest, 0, 0, F1, NewFValue, F3,
F4, TrUserData).
d_field_Record_data(<<1:1, X:7, Rest/binary>>, N, Acc,
F1, F2, F3, F4, TrUserData)
when N < 57 ->
d_field_Record_data(Rest, N + 7, X bsl N + Acc, F1, F2,
F3, F4, TrUserData);
d_field_Record_data(<<0:1, X:7, Rest/binary>>, N, Acc,
F1, F2, _, F4, TrUserData) ->
Len = X bsl N + Acc,
<<Bytes:Len/binary, Rest2/binary>> = Rest,
NewFValue = binary:copy(Bytes),
dfp_read_field_def_Record(Rest2, 0, 0, F1, F2,
NewFValue, F4, TrUserData).
d_field_Record_tags(<<1:1, X:7, Rest/binary>>, N, Acc,
F1, F2, F3, F4, TrUserData)
when N < 57 ->
d_field_Record_tags(Rest, N + 7, X bsl N + Acc, F1, F2,
F3, F4, TrUserData);
d_field_Record_tags(<<0:1, X:7, Rest/binary>>, N, Acc,
F1, F2, F3, F4, TrUserData) ->
Len = X bsl N + Acc,
<<Bs:Len/binary, Rest2/binary>> = Rest,
NewFValue = id(d_msg_Tag(Bs, TrUserData), TrUserData),
dfp_read_field_def_Record(Rest2, 0, 0, F1, F2, F3,
cons(NewFValue, F4, TrUserData), TrUserData).
skip_varint_Record(<<1:1, _:7, Rest/binary>>, Z1, Z2,
F1, F2, F3, F4, TrUserData) ->
skip_varint_Record(Rest, Z1, Z2, F1, F2, F3, F4,
TrUserData);
skip_varint_Record(<<0:1, _:7, Rest/binary>>, Z1, Z2,
F1, F2, F3, F4, TrUserData) ->
dfp_read_field_def_Record(Rest, Z1, Z2, F1, F2, F3, F4,
TrUserData).
skip_length_delimited_Record(<<1:1, X:7, Rest/binary>>,
N, Acc, F1, F2, F3, F4, TrUserData)
when N < 57 ->
skip_length_delimited_Record(Rest, N + 7, X bsl N + Acc,
F1, F2, F3, F4, TrUserData);
skip_length_delimited_Record(<<0:1, X:7, Rest/binary>>,
N, Acc, F1, F2, F3, F4, TrUserData) ->
Length = X bsl N + Acc,
<<_:Length/binary, Rest2/binary>> = Rest,
dfp_read_field_def_Record(Rest2, 0, 0, F1, F2, F3, F4,
TrUserData).
skip_32_Record(<<_:32, Rest/binary>>, Z1, Z2, F1, F2,
F3, F4, TrUserData) ->
dfp_read_field_def_Record(Rest, Z1, Z2, F1, F2, F3, F4,
TrUserData).
skip_64_Record(<<_:64, Rest/binary>>, Z1, Z2, F1, F2,
F3, F4, TrUserData) ->
dfp_read_field_def_Record(Rest, Z1, Z2, F1, F2, F3, F4,
TrUserData).
d_msg_AggregatedRecord(Bin, TrUserData) ->
dfp_read_field_def_AggregatedRecord(Bin, 0, 0,
id([], TrUserData), id([], TrUserData),
id([], TrUserData), TrUserData).
dfp_read_field_def_AggregatedRecord(<<10, Rest/binary>>,
Z1, Z2, F1, F2, F3, TrUserData) ->
d_field_AggregatedRecord_partition_key_table(Rest, Z1,
Z2, F1, F2, F3, TrUserData);
dfp_read_field_def_AggregatedRecord(<<18, Rest/binary>>,
Z1, Z2, F1, F2, F3, TrUserData) ->
d_field_AggregatedRecord_explicit_hash_key_table(Rest,
Z1, Z2, F1, F2, F3,
TrUserData);
dfp_read_field_def_AggregatedRecord(<<26, Rest/binary>>,
Z1, Z2, F1, F2, F3, TrUserData) ->
d_field_AggregatedRecord_records(Rest, Z1, Z2, F1, F2,
F3, TrUserData);
dfp_read_field_def_AggregatedRecord(<<>>, 0, 0, F1, F2,
F3, TrUserData) ->
#'AggregatedRecord'{partition_key_table =
lists_reverse(F1, TrUserData),
explicit_hash_key_table = lists_reverse(F2, TrUserData),
records = lists_reverse(F3, TrUserData)};
dfp_read_field_def_AggregatedRecord(Other, Z1, Z2, F1,
F2, F3, TrUserData) ->
dg_read_field_def_AggregatedRecord(Other, Z1, Z2, F1,
F2, F3, TrUserData).
dg_read_field_def_AggregatedRecord(<<1:1, X:7,
Rest/binary>>,
N, Acc, F1, F2, F3, TrUserData)
when N < 32 - 7 ->
dg_read_field_def_AggregatedRecord(Rest, N + 7,
X bsl N + Acc, F1, F2, F3, TrUserData);
dg_read_field_def_AggregatedRecord(<<0:1, X:7,
Rest/binary>>,
N, Acc, F1, F2, F3, TrUserData) ->
Key = X bsl N + Acc,
case Key of
10 ->
d_field_AggregatedRecord_partition_key_table(Rest, 0, 0,
F1, F2, F3, TrUserData);
18 ->
d_field_AggregatedRecord_explicit_hash_key_table(Rest,
0, 0, F1, F2, F3,
TrUserData);
26 ->
d_field_AggregatedRecord_records(Rest, 0, 0, F1, F2, F3,
TrUserData);
_ ->
case Key band 7 of
0 ->
skip_varint_AggregatedRecord(Rest, 0, 0, F1, F2, F3,
TrUserData);
1 ->
skip_64_AggregatedRecord(Rest, 0, 0, F1, F2, F3,
TrUserData);
2 ->
skip_length_delimited_AggregatedRecord(Rest, 0, 0, F1,
F2, F3, TrUserData);
5 ->
skip_32_AggregatedRecord(Rest, 0, 0, F1, F2, F3,
TrUserData)
end
end;
dg_read_field_def_AggregatedRecord(<<>>, 0, 0, F1, F2,
F3, TrUserData) ->
#'AggregatedRecord'{partition_key_table =
lists_reverse(F1, TrUserData),
explicit_hash_key_table = lists_reverse(F2, TrUserData),
records = lists_reverse(F3, TrUserData)}.
d_field_AggregatedRecord_partition_key_table(<<1:1, X:7,
Rest/binary>>,
N, Acc, F1, F2, F3, TrUserData)
when N < 57 ->
d_field_AggregatedRecord_partition_key_table(Rest,
N + 7, X bsl N + Acc, F1, F2,
F3, TrUserData);
d_field_AggregatedRecord_partition_key_table(<<0:1, X:7,
Rest/binary>>,
N, Acc, F1, F2, F3, TrUserData) ->
Len = X bsl N + Acc,
<<Bytes:Len/binary, Rest2/binary>> = Rest,
NewFValue = binary:copy(Bytes),
dfp_read_field_def_AggregatedRecord(Rest2, 0, 0,
cons(NewFValue, F1, TrUserData), F2, F3,
TrUserData).
d_field_AggregatedRecord_explicit_hash_key_table(<<1:1,
X:7, Rest/binary>>,
N, Acc, F1, F2, F3, TrUserData)
when N < 57 ->
d_field_AggregatedRecord_explicit_hash_key_table(Rest,
N + 7, X bsl N + Acc, F1,
F2, F3, TrUserData);
d_field_AggregatedRecord_explicit_hash_key_table(<<0:1,
X:7, Rest/binary>>,
N, Acc, F1, F2, F3,
TrUserData) ->
Len = X bsl N + Acc,
<<Bytes:Len/binary, Rest2/binary>> = Rest,
NewFValue = binary:copy(Bytes),
dfp_read_field_def_AggregatedRecord(Rest2, 0, 0, F1,
cons(NewFValue, F2, TrUserData), F3,
TrUserData).
d_field_AggregatedRecord_records(<<1:1, X:7,
Rest/binary>>,
N, Acc, F1, F2, F3, TrUserData)
when N < 57 ->
d_field_AggregatedRecord_records(Rest, N + 7,
X bsl N + Acc, F1, F2, F3, TrUserData);
d_field_AggregatedRecord_records(<<0:1, X:7,
Rest/binary>>,
N, Acc, F1, F2, F3, TrUserData) ->
Len = X bsl N + Acc,
<<Bs:Len/binary, Rest2/binary>> = Rest,
NewFValue = id(d_msg_Record(Bs, TrUserData),
TrUserData),
dfp_read_field_def_AggregatedRecord(Rest2, 0, 0, F1, F2,
cons(NewFValue, F3, TrUserData),
TrUserData).
skip_varint_AggregatedRecord(<<1:1, _:7, Rest/binary>>,
Z1, Z2, F1, F2, F3, TrUserData) ->
skip_varint_AggregatedRecord(Rest, Z1, Z2, F1, F2, F3,
TrUserData);
skip_varint_AggregatedRecord(<<0:1, _:7, Rest/binary>>,
Z1, Z2, F1, F2, F3, TrUserData) ->
dfp_read_field_def_AggregatedRecord(Rest, Z1, Z2, F1,
F2, F3, TrUserData).
skip_length_delimited_AggregatedRecord(<<1:1, X:7,
Rest/binary>>,
N, Acc, F1, F2, F3, TrUserData)
when N < 57 ->
skip_length_delimited_AggregatedRecord(Rest, N + 7,
X bsl N + Acc, F1, F2, F3,
TrUserData);
skip_length_delimited_AggregatedRecord(<<0:1, X:7,
Rest/binary>>,
N, Acc, F1, F2, F3, TrUserData) ->
Length = X bsl N + Acc,
<<_:Length/binary, Rest2/binary>> = Rest,
dfp_read_field_def_AggregatedRecord(Rest2, 0, 0, F1, F2,
F3, TrUserData).
skip_32_AggregatedRecord(<<_:32, Rest/binary>>, Z1, Z2,
F1, F2, F3, TrUserData) ->
dfp_read_field_def_AggregatedRecord(Rest, Z1, Z2, F1,
F2, F3, TrUserData).
skip_64_AggregatedRecord(<<_:64, Rest/binary>>, Z1, Z2,
F1, F2, F3, TrUserData) ->
dfp_read_field_def_AggregatedRecord(Rest, Z1, Z2, F1,
F2, F3, TrUserData).
merge_msgs(Prev, New) -> merge_msgs(Prev, New, []).
merge_msgs(Prev, New, Opts)
when element(1, Prev) =:= element(1, New) ->
TrUserData = proplists:get_value(user_data, Opts),
case Prev of
#'Tag'{} -> merge_msg_Tag(Prev, New, TrUserData);
#'Record'{} -> merge_msg_Record(Prev, New, TrUserData);
#'AggregatedRecord'{} ->
merge_msg_AggregatedRecord(Prev, New, TrUserData)
end.
merge_msg_Tag(#'Tag'{value = PFvalue},
#'Tag'{key = NFkey, value = NFvalue}, _) ->
#'Tag'{key = NFkey,
value =
if NFvalue =:= undefined -> PFvalue;
true -> NFvalue
end}.
merge_msg_Record(#'Record'{explicit_hash_key_index =
PFexplicit_hash_key_index,
tags = PFtags},
#'Record'{partition_key_index = NFpartition_key_index,
explicit_hash_key_index = NFexplicit_hash_key_index,
data = NFdata, tags = NFtags},
TrUserData) ->
#'Record'{partition_key_index = NFpartition_key_index,
explicit_hash_key_index =
if NFexplicit_hash_key_index =:= undefined ->
PFexplicit_hash_key_index;
true -> NFexplicit_hash_key_index
end,
data = NFdata,
tags = 'erlang_++'(PFtags, NFtags, TrUserData)}.
merge_msg_AggregatedRecord(#'AggregatedRecord'{partition_key_table
= PFpartition_key_table,
explicit_hash_key_table =
PFexplicit_hash_key_table,
records = PFrecords},
#'AggregatedRecord'{partition_key_table =
NFpartition_key_table,
explicit_hash_key_table =
NFexplicit_hash_key_table,
records = NFrecords},
TrUserData) ->
#'AggregatedRecord'{partition_key_table =
'erlang_++'(PFpartition_key_table,
NFpartition_key_table, TrUserData),
explicit_hash_key_table =
'erlang_++'(PFexplicit_hash_key_table,
NFexplicit_hash_key_table, TrUserData),
records =
'erlang_++'(PFrecords, NFrecords, TrUserData)}.
verify_msg(Msg) -> verify_msg(Msg, []).
verify_msg(Msg, Opts) ->
TrUserData = proplists:get_value(user_data, Opts),
case Msg of
#'Tag'{} -> v_msg_Tag(Msg, ['Tag'], TrUserData);
#'Record'{} ->
v_msg_Record(Msg, ['Record'], TrUserData);
#'AggregatedRecord'{} ->
v_msg_AggregatedRecord(Msg, ['AggregatedRecord'],
TrUserData);
_ -> mk_type_error(not_a_known_message, Msg, [])
end.
-dialyzer({nowarn_function,v_msg_Tag/3}).
v_msg_Tag(#'Tag'{key = F1, value = F2}, Path, _) ->
v_type_string(F1, [key | Path]),
if F2 == undefined -> ok;
true -> v_type_string(F2, [value | Path])
end,
ok;
v_msg_Tag(X, Path, _TrUserData) ->
mk_type_error({expected_msg, 'Tag'}, X, Path).
-dialyzer({nowarn_function,v_msg_Record/3}).
v_msg_Record(#'Record'{partition_key_index = F1,
explicit_hash_key_index = F2, data = F3, tags = F4},
Path, TrUserData) ->
v_type_uint64(F1, [partition_key_index | Path]),
if F2 == undefined -> ok;
true ->
v_type_uint64(F2, [explicit_hash_key_index | Path])
end,
v_type_bytes(F3, [data | Path]),
if is_list(F4) ->
_ = [v_msg_Tag(Elem, [tags | Path], TrUserData)
|| Elem <- F4],
ok;
true ->
mk_type_error({invalid_list_of, {msg, 'Tag'}}, F4, Path)
end,
ok;
v_msg_Record(X, Path, _TrUserData) ->
mk_type_error({expected_msg, 'Record'}, X, Path).
-dialyzer({nowarn_function,v_msg_AggregatedRecord/3}).
v_msg_AggregatedRecord(#'AggregatedRecord'{partition_key_table
= F1,
explicit_hash_key_table = F2,
records = F3},
Path, TrUserData) ->
if is_list(F1) ->
_ = [v_type_string(Elem, [partition_key_table | Path])
|| Elem <- F1],
ok;
true ->
mk_type_error({invalid_list_of, string}, F1, Path)
end,
if is_list(F2) ->
_ = [v_type_string(Elem,
[explicit_hash_key_table | Path])
|| Elem <- F2],
ok;
true ->
mk_type_error({invalid_list_of, string}, F2, Path)
end,
if is_list(F3) ->
_ = [v_msg_Record(Elem, [records | Path], TrUserData)
|| Elem <- F3],
ok;
true ->
mk_type_error({invalid_list_of, {msg, 'Record'}}, F3,
Path)
end,
ok.
-dialyzer({nowarn_function,v_type_uint64/2}).
v_type_uint64(N, _Path)
when 0 =< N, N =< 18446744073709551615 ->
ok;
v_type_uint64(N, Path) when is_integer(N) ->
mk_type_error({value_out_of_range, uint64, unsigned,
64},
N, Path);
v_type_uint64(X, Path) ->
mk_type_error({bad_integer, uint64, unsigned, 64}, X,
Path).
-dialyzer({nowarn_function,v_type_string/2}).
v_type_string(S, Path) when is_list(S); is_binary(S) ->
try unicode:characters_to_binary(S) of
B when is_binary(B) -> ok;
{error, _, _} ->
mk_type_error(bad_unicode_string, S, Path)
catch
error:badarg ->
mk_type_error(bad_unicode_string, S, Path)
end;
v_type_string(X, Path) ->
mk_type_error(bad_unicode_string, X, Path).
-dialyzer({nowarn_function,v_type_bytes/2}).
v_type_bytes(B, _Path) when is_binary(B) -> ok;
v_type_bytes(B, _Path) when is_list(B) -> ok;
v_type_bytes(X, Path) ->
mk_type_error(bad_binary_value, X, Path).
-spec mk_type_error(_, _, list()) -> no_return().
mk_type_error(Error, ValueSeen, Path) ->
Path2 = prettify_path(Path),
erlang:error({gpb_type_error,
{Error, [{value, ValueSeen}, {path, Path2}]}}).
prettify_path([]) -> top_level;
prettify_path(PathR) ->
list_to_atom(string:join(lists:map(fun atom_to_list/1,
lists:reverse(PathR)),
".")).
-compile({inline,id/2}).
id(X, _TrUserData) -> X.
-compile({inline,cons/3}).
cons(Elem, Acc, _TrUserData) -> [Elem | Acc].
-compile({inline,lists_reverse/2}).
'lists_reverse'(L, _TrUserData) -> lists:reverse(L).
-compile({inline,'erlang_++'/3}).
'erlang_++'(A, B, _TrUserData) -> A ++ B.
get_msg_defs() ->
[{{msg, 'Tag'},
[#field{name = key, fnum = 1, rnum = 2, type = string,
occurrence = required, opts = []},
#field{name = value, fnum = 2, rnum = 3, type = string,
occurrence = optional, opts = []}]},
{{msg, 'Record'},
[#field{name = partition_key_index, fnum = 1, rnum = 2,
type = uint64, occurrence = required, opts = []},
#field{name = explicit_hash_key_index, fnum = 2,
rnum = 3, type = uint64, occurrence = optional,
opts = []},
#field{name = data, fnum = 3, rnum = 4, type = bytes,
occurrence = required, opts = []},
#field{name = tags, fnum = 4, rnum = 5,
type = {msg, 'Tag'}, occurrence = repeated,
opts = []}]},
{{msg, 'AggregatedRecord'},
[#field{name = partition_key_table, fnum = 1, rnum = 2,
type = string, occurrence = repeated, opts = []},
#field{name = explicit_hash_key_table, fnum = 2,
rnum = 3, type = string, occurrence = repeated,
opts = []},
#field{name = records, fnum = 3, rnum = 4,
type = {msg, 'Record'}, occurrence = repeated,
opts = []}]}].
get_msg_names() ->
['Tag', 'Record', 'AggregatedRecord'].
get_enum_names() -> [].
fetch_msg_def(MsgName) ->
case find_msg_def(MsgName) of
Fs when is_list(Fs) -> Fs;
error -> erlang:error({no_such_msg, MsgName})
end.
-spec fetch_enum_def(_) -> no_return().
fetch_enum_def(EnumName) ->
erlang:error({no_such_enum, EnumName}).
find_msg_def('Tag') ->
[#field{name = key, fnum = 1, rnum = 2, type = string,
occurrence = required, opts = []},
#field{name = value, fnum = 2, rnum = 3, type = string,
occurrence = optional, opts = []}];
find_msg_def('Record') ->
[#field{name = partition_key_index, fnum = 1, rnum = 2,
type = uint64, occurrence = required, opts = []},
#field{name = explicit_hash_key_index, fnum = 2,
rnum = 3, type = uint64, occurrence = optional,
opts = []},
#field{name = data, fnum = 3, rnum = 4, type = bytes,
occurrence = required, opts = []},
#field{name = tags, fnum = 4, rnum = 5,
type = {msg, 'Tag'}, occurrence = repeated, opts = []}];
find_msg_def('AggregatedRecord') ->
[#field{name = partition_key_table, fnum = 1, rnum = 2,
type = string, occurrence = repeated, opts = []},
#field{name = explicit_hash_key_table, fnum = 2,
rnum = 3, type = string, occurrence = repeated,
opts = []},
#field{name = records, fnum = 3, rnum = 4,
type = {msg, 'Record'}, occurrence = repeated,
opts = []}];
find_msg_def(_) -> error.
find_enum_def(_) -> error.
-spec enum_symbol_by_value(_, _) -> no_return().
enum_symbol_by_value(E, V) ->
erlang:error({no_enum_defs, E, V}).
-spec enum_value_by_symbol(_, _) -> no_return().
enum_value_by_symbol(E, V) ->
erlang:error({no_enum_defs, E, V}).
get_service_names() -> [].
get_service_def(_) -> error.
get_rpc_names(_) -> error.
find_rpc_def(_, _) -> error.
-spec fetch_rpc_def(_, _) -> no_return().
fetch_rpc_def(ServiceName, RpcName) ->
erlang:error({no_such_rpc, ServiceName, RpcName}).
get_package_name() -> undefined.
gpb_version_as_string() ->
"3.26.5".
gpb_version_as_list() ->
[3,26,5].