25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

564 lines
17 KiB

  1. %% Vendored from hex_core v0.7.0, do not edit manually
  2. %% -*- coding: utf-8 -*-
  3. %% Automatically generated, do not edit
  4. %% Generated by gpb_compile version 4.3.1
  5. -module(r3_hex_pb_signed).
  6. -export([encode_msg/2, encode_msg/3]).
  7. -export([decode_msg/2, decode_msg/3]).
  8. -export([merge_msgs/3, merge_msgs/4]).
  9. -export([verify_msg/2, verify_msg/3]).
  10. -export([get_msg_defs/0]).
  11. -export([get_msg_names/0]).
  12. -export([get_group_names/0]).
  13. -export([get_msg_or_group_names/0]).
  14. -export([get_enum_names/0]).
  15. -export([find_msg_def/1, fetch_msg_def/1]).
  16. -export([find_enum_def/1, fetch_enum_def/1]).
  17. -export([enum_symbol_by_value/2, enum_value_by_symbol/2]).
  18. -export([get_service_names/0]).
  19. -export([get_service_def/1]).
  20. -export([get_rpc_names/1]).
  21. -export([find_rpc_def/2, fetch_rpc_def/2]).
  22. -export([get_package_name/0]).
  23. -export([gpb_version_as_string/0, gpb_version_as_list/0]).
  24. %% enumerated types
  25. -export_type([]).
  26. %% message types
  27. -type 'Signed'() ::
  28. #{payload => iodata() % = 1
  29. %% signature => iodata() % = 2
  30. }.
  31. -export_type(['Signed'/0]).
  32. -spec encode_msg('Signed'(), atom()) -> binary().
  33. encode_msg(Msg, MsgName) when is_atom(MsgName) ->
  34. encode_msg(Msg, MsgName, []).
  35. -spec encode_msg('Signed'(), atom(), list()) -> binary().
  36. encode_msg(Msg, MsgName, Opts) ->
  37. verify_msg(Msg, MsgName, Opts),
  38. TrUserData = proplists:get_value(user_data, Opts),
  39. case MsgName of
  40. 'Signed' ->
  41. e_msg_Signed(id(Msg, TrUserData), TrUserData)
  42. end.
  43. e_msg_Signed(Msg, TrUserData) ->
  44. e_msg_Signed(Msg, <<>>, TrUserData).
  45. e_msg_Signed(#{payload := F1} = M, Bin, TrUserData) ->
  46. B1 = begin
  47. TrF1 = id(F1, TrUserData),
  48. e_type_bytes(TrF1, <<Bin/binary, 10>>, TrUserData)
  49. end,
  50. case M of
  51. #{signature := F2} ->
  52. begin
  53. TrF2 = id(F2, TrUserData),
  54. e_type_bytes(TrF2, <<B1/binary, 18>>, TrUserData)
  55. end;
  56. _ -> B1
  57. end.
  58. -compile({nowarn_unused_function,e_type_sint/3}).
  59. e_type_sint(Value, Bin, _TrUserData) when Value >= 0 ->
  60. e_varint(Value * 2, Bin);
  61. e_type_sint(Value, Bin, _TrUserData) ->
  62. e_varint(Value * -2 - 1, Bin).
  63. -compile({nowarn_unused_function,e_type_int32/3}).
  64. e_type_int32(Value, Bin, _TrUserData)
  65. when 0 =< Value, Value =< 127 ->
  66. <<Bin/binary, Value>>;
  67. e_type_int32(Value, Bin, _TrUserData) ->
  68. <<N:64/unsigned-native>> = <<Value:64/signed-native>>,
  69. e_varint(N, Bin).
  70. -compile({nowarn_unused_function,e_type_int64/3}).
  71. e_type_int64(Value, Bin, _TrUserData)
  72. when 0 =< Value, Value =< 127 ->
  73. <<Bin/binary, Value>>;
  74. e_type_int64(Value, Bin, _TrUserData) ->
  75. <<N:64/unsigned-native>> = <<Value:64/signed-native>>,
  76. e_varint(N, Bin).
  77. -compile({nowarn_unused_function,e_type_bool/3}).
  78. e_type_bool(true, Bin, _TrUserData) ->
  79. <<Bin/binary, 1>>;
  80. e_type_bool(false, Bin, _TrUserData) ->
  81. <<Bin/binary, 0>>;
  82. e_type_bool(1, Bin, _TrUserData) -> <<Bin/binary, 1>>;
  83. e_type_bool(0, Bin, _TrUserData) -> <<Bin/binary, 0>>.
  84. -compile({nowarn_unused_function,e_type_string/3}).
  85. e_type_string(S, Bin, _TrUserData) ->
  86. Utf8 = unicode:characters_to_binary(S),
  87. Bin2 = e_varint(byte_size(Utf8), Bin),
  88. <<Bin2/binary, Utf8/binary>>.
  89. -compile({nowarn_unused_function,e_type_bytes/3}).
  90. e_type_bytes(Bytes, Bin, _TrUserData)
  91. when is_binary(Bytes) ->
  92. Bin2 = e_varint(byte_size(Bytes), Bin),
  93. <<Bin2/binary, Bytes/binary>>;
  94. e_type_bytes(Bytes, Bin, _TrUserData)
  95. when is_list(Bytes) ->
  96. BytesBin = iolist_to_binary(Bytes),
  97. Bin2 = e_varint(byte_size(BytesBin), Bin),
  98. <<Bin2/binary, BytesBin/binary>>.
  99. -compile({nowarn_unused_function,e_type_fixed32/3}).
  100. e_type_fixed32(Value, Bin, _TrUserData) ->
  101. <<Bin/binary, Value:32/little>>.
  102. -compile({nowarn_unused_function,e_type_sfixed32/3}).
  103. e_type_sfixed32(Value, Bin, _TrUserData) ->
  104. <<Bin/binary, Value:32/little-signed>>.
  105. -compile({nowarn_unused_function,e_type_fixed64/3}).
  106. e_type_fixed64(Value, Bin, _TrUserData) ->
  107. <<Bin/binary, Value:64/little>>.
  108. -compile({nowarn_unused_function,e_type_sfixed64/3}).
  109. e_type_sfixed64(Value, Bin, _TrUserData) ->
  110. <<Bin/binary, Value:64/little-signed>>.
  111. -compile({nowarn_unused_function,e_type_float/3}).
  112. e_type_float(V, Bin, _) when is_number(V) ->
  113. <<Bin/binary, V:32/little-float>>;
  114. e_type_float(infinity, Bin, _) ->
  115. <<Bin/binary, 0:16, 128, 127>>;
  116. e_type_float('-infinity', Bin, _) ->
  117. <<Bin/binary, 0:16, 128, 255>>;
  118. e_type_float(nan, Bin, _) ->
  119. <<Bin/binary, 0:16, 192, 127>>.
  120. -compile({nowarn_unused_function,e_type_double/3}).
  121. e_type_double(V, Bin, _) when is_number(V) ->
  122. <<Bin/binary, V:64/little-float>>;
  123. e_type_double(infinity, Bin, _) ->
  124. <<Bin/binary, 0:48, 240, 127>>;
  125. e_type_double('-infinity', Bin, _) ->
  126. <<Bin/binary, 0:48, 240, 255>>;
  127. e_type_double(nan, Bin, _) ->
  128. <<Bin/binary, 0:48, 248, 127>>.
  129. -compile({nowarn_unused_function,e_varint/3}).
  130. e_varint(N, Bin, _TrUserData) -> e_varint(N, Bin).
  131. -compile({nowarn_unused_function,e_varint/2}).
  132. e_varint(N, Bin) when N =< 127 -> <<Bin/binary, N>>;
  133. e_varint(N, Bin) ->
  134. Bin2 = <<Bin/binary, (N band 127 bor 128)>>,
  135. e_varint(N bsr 7, Bin2).
  136. decode_msg(Bin, MsgName) when is_binary(Bin) ->
  137. decode_msg(Bin, MsgName, []).
  138. decode_msg(Bin, MsgName, Opts) when is_binary(Bin) ->
  139. TrUserData = proplists:get_value(user_data, Opts),
  140. decode_msg_1_catch(Bin, MsgName, TrUserData).
  141. -ifdef('OTP_RELEASE').
  142. decode_msg_1_catch(Bin, MsgName, TrUserData) ->
  143. try decode_msg_2_doit(MsgName, Bin, TrUserData)
  144. catch Class:Reason:StackTrace -> error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}})
  145. end.
  146. -else.
  147. -ifdef('GPB_PATTERN_STACK').
  148. decode_msg_1_catch(Bin, MsgName, TrUserData) ->
  149. try decode_msg_2_doit(MsgName, Bin, TrUserData)
  150. catch Class:Reason:StackTrace -> error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}})
  151. end.
  152. -else.
  153. decode_msg_1_catch(Bin, MsgName, TrUserData) ->
  154. try decode_msg_2_doit(MsgName, Bin, TrUserData)
  155. catch Class:Reason ->
  156. StackTrace = erlang:get_stacktrace(),
  157. error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}})
  158. end.
  159. -endif.
  160. -endif.
  161. decode_msg_2_doit('Signed', Bin, TrUserData) ->
  162. id(d_msg_Signed(Bin, TrUserData), TrUserData).
  163. d_msg_Signed(Bin, TrUserData) ->
  164. dfp_read_field_def_Signed(Bin, 0, 0,
  165. id('$undef', TrUserData),
  166. id('$undef', TrUserData), TrUserData).
  167. dfp_read_field_def_Signed(<<10, Rest/binary>>, Z1, Z2,
  168. F@_1, F@_2, TrUserData) ->
  169. d_field_Signed_payload(Rest, Z1, Z2, F@_1, F@_2,
  170. TrUserData);
  171. dfp_read_field_def_Signed(<<18, Rest/binary>>, Z1, Z2,
  172. F@_1, F@_2, TrUserData) ->
  173. d_field_Signed_signature(Rest, Z1, Z2, F@_1, F@_2,
  174. TrUserData);
  175. dfp_read_field_def_Signed(<<>>, 0, 0, F@_1, F@_2, _) ->
  176. S1 = #{payload => F@_1},
  177. if F@_2 == '$undef' -> S1;
  178. true -> S1#{signature => F@_2}
  179. end;
  180. dfp_read_field_def_Signed(Other, Z1, Z2, F@_1, F@_2,
  181. TrUserData) ->
  182. dg_read_field_def_Signed(Other, Z1, Z2, F@_1, F@_2,
  183. TrUserData).
  184. dg_read_field_def_Signed(<<1:1, X:7, Rest/binary>>, N,
  185. Acc, F@_1, F@_2, TrUserData)
  186. when N < 32 - 7 ->
  187. dg_read_field_def_Signed(Rest, N + 7, X bsl N + Acc,
  188. F@_1, F@_2, TrUserData);
  189. dg_read_field_def_Signed(<<0:1, X:7, Rest/binary>>, N,
  190. Acc, F@_1, F@_2, TrUserData) ->
  191. Key = X bsl N + Acc,
  192. case Key of
  193. 10 ->
  194. d_field_Signed_payload(Rest, 0, 0, F@_1, F@_2,
  195. TrUserData);
  196. 18 ->
  197. d_field_Signed_signature(Rest, 0, 0, F@_1, F@_2,
  198. TrUserData);
  199. _ ->
  200. case Key band 7 of
  201. 0 ->
  202. skip_varint_Signed(Rest, 0, 0, F@_1, F@_2, TrUserData);
  203. 1 -> skip_64_Signed(Rest, 0, 0, F@_1, F@_2, TrUserData);
  204. 2 ->
  205. skip_length_delimited_Signed(Rest, 0, 0, F@_1, F@_2,
  206. TrUserData);
  207. 3 ->
  208. skip_group_Signed(Rest, Key bsr 3, 0, F@_1, F@_2,
  209. TrUserData);
  210. 5 -> skip_32_Signed(Rest, 0, 0, F@_1, F@_2, TrUserData)
  211. end
  212. end;
  213. dg_read_field_def_Signed(<<>>, 0, 0, F@_1, F@_2, _) ->
  214. S1 = #{payload => F@_1},
  215. if F@_2 == '$undef' -> S1;
  216. true -> S1#{signature => F@_2}
  217. end.
  218. d_field_Signed_payload(<<1:1, X:7, Rest/binary>>, N,
  219. Acc, F@_1, F@_2, TrUserData)
  220. when N < 57 ->
  221. d_field_Signed_payload(Rest, N + 7, X bsl N + Acc, F@_1,
  222. F@_2, TrUserData);
  223. d_field_Signed_payload(<<0:1, X:7, Rest/binary>>, N,
  224. Acc, _, F@_2, TrUserData) ->
  225. {NewFValue, RestF} = begin
  226. Len = X bsl N + Acc,
  227. <<Bytes:Len/binary, Rest2/binary>> = Rest,
  228. {id(binary:copy(Bytes), TrUserData), Rest2}
  229. end,
  230. dfp_read_field_def_Signed(RestF, 0, 0, NewFValue, F@_2,
  231. TrUserData).
  232. d_field_Signed_signature(<<1:1, X:7, Rest/binary>>, N,
  233. Acc, F@_1, F@_2, TrUserData)
  234. when N < 57 ->
  235. d_field_Signed_signature(Rest, N + 7, X bsl N + Acc,
  236. F@_1, F@_2, TrUserData);
  237. d_field_Signed_signature(<<0:1, X:7, Rest/binary>>, N,
  238. Acc, F@_1, _, TrUserData) ->
  239. {NewFValue, RestF} = begin
  240. Len = X bsl N + Acc,
  241. <<Bytes:Len/binary, Rest2/binary>> = Rest,
  242. {id(binary:copy(Bytes), TrUserData), Rest2}
  243. end,
  244. dfp_read_field_def_Signed(RestF, 0, 0, F@_1, NewFValue,
  245. TrUserData).
  246. skip_varint_Signed(<<1:1, _:7, Rest/binary>>, Z1, Z2,
  247. F@_1, F@_2, TrUserData) ->
  248. skip_varint_Signed(Rest, Z1, Z2, F@_1, F@_2,
  249. TrUserData);
  250. skip_varint_Signed(<<0:1, _:7, Rest/binary>>, Z1, Z2,
  251. F@_1, F@_2, TrUserData) ->
  252. dfp_read_field_def_Signed(Rest, Z1, Z2, F@_1, F@_2,
  253. TrUserData).
  254. skip_length_delimited_Signed(<<1:1, X:7, Rest/binary>>,
  255. N, Acc, F@_1, F@_2, TrUserData)
  256. when N < 57 ->
  257. skip_length_delimited_Signed(Rest, N + 7, X bsl N + Acc,
  258. F@_1, F@_2, TrUserData);
  259. skip_length_delimited_Signed(<<0:1, X:7, Rest/binary>>,
  260. N, Acc, F@_1, F@_2, TrUserData) ->
  261. Length = X bsl N + Acc,
  262. <<_:Length/binary, Rest2/binary>> = Rest,
  263. dfp_read_field_def_Signed(Rest2, 0, 0, F@_1, F@_2,
  264. TrUserData).
  265. skip_group_Signed(Bin, FNum, Z2, F@_1, F@_2,
  266. TrUserData) ->
  267. {_, Rest} = read_group(Bin, FNum),
  268. dfp_read_field_def_Signed(Rest, 0, Z2, F@_1, F@_2,
  269. TrUserData).
  270. skip_32_Signed(<<_:32, Rest/binary>>, Z1, Z2, F@_1,
  271. F@_2, TrUserData) ->
  272. dfp_read_field_def_Signed(Rest, Z1, Z2, F@_1, F@_2,
  273. TrUserData).
  274. skip_64_Signed(<<_:64, Rest/binary>>, Z1, Z2, F@_1,
  275. F@_2, TrUserData) ->
  276. dfp_read_field_def_Signed(Rest, Z1, Z2, F@_1, F@_2,
  277. TrUserData).
  278. read_group(Bin, FieldNum) ->
  279. {NumBytes, EndTagLen} = read_gr_b(Bin, 0, 0, 0, 0, FieldNum),
  280. <<Group:NumBytes/binary, _:EndTagLen/binary, Rest/binary>> = Bin,
  281. {Group, Rest}.
  282. %% Like skipping over fields, but record the total length,
  283. %% Each field is <(FieldNum bsl 3) bor FieldType> ++ <FieldValue>
  284. %% Record the length because varints may be non-optimally encoded.
  285. %%
  286. %% Groups can be nested, but assume the same FieldNum cannot be nested
  287. %% because group field numbers are shared with the rest of the fields
  288. %% numbers. Thus we can search just for an group-end with the same
  289. %% field number.
  290. %%
  291. %% (The only time the same group field number could occur would
  292. %% be in a nested sub message, but then it would be inside a
  293. %% length-delimited entry, which we skip-read by length.)
  294. read_gr_b(<<1:1, X:7, Tl/binary>>, N, Acc, NumBytes, TagLen, FieldNum)
  295. when N < (32-7) ->
  296. read_gr_b(Tl, N+7, X bsl N + Acc, NumBytes, TagLen+1, FieldNum);
  297. read_gr_b(<<0:1, X:7, Tl/binary>>, N, Acc, NumBytes, TagLen,
  298. FieldNum) ->
  299. Key = X bsl N + Acc,
  300. TagLen1 = TagLen + 1,
  301. case {Key bsr 3, Key band 7} of
  302. {FieldNum, 4} -> % 4 = group_end
  303. {NumBytes, TagLen1};
  304. {_, 0} -> % 0 = varint
  305. read_gr_vi(Tl, 0, NumBytes + TagLen1, FieldNum);
  306. {_, 1} -> % 1 = bits64
  307. <<_:64, Tl2/binary>> = Tl,
  308. read_gr_b(Tl2, 0, 0, NumBytes + TagLen1 + 8, 0, FieldNum);
  309. {_, 2} -> % 2 = length_delimited
  310. read_gr_ld(Tl, 0, 0, NumBytes + TagLen1, FieldNum);
  311. {_, 3} -> % 3 = group_start
  312. read_gr_b(Tl, 0, 0, NumBytes + TagLen1, 0, FieldNum);
  313. {_, 4} -> % 4 = group_end
  314. read_gr_b(Tl, 0, 0, NumBytes + TagLen1, 0, FieldNum);
  315. {_, 5} -> % 5 = bits32
  316. <<_:32, Tl2/binary>> = Tl,
  317. read_gr_b(Tl2, 0, 0, NumBytes + TagLen1 + 4, 0, FieldNum)
  318. end.
  319. read_gr_vi(<<1:1, _:7, Tl/binary>>, N, NumBytes, FieldNum)
  320. when N < (64-7) ->
  321. read_gr_vi(Tl, N+7, NumBytes+1, FieldNum);
  322. read_gr_vi(<<0:1, _:7, Tl/binary>>, _, NumBytes, FieldNum) ->
  323. read_gr_b(Tl, 0, 0, NumBytes+1, 0, FieldNum).
  324. read_gr_ld(<<1:1, X:7, Tl/binary>>, N, Acc, NumBytes, FieldNum)
  325. when N < (64-7) ->
  326. read_gr_ld(Tl, N+7, X bsl N + Acc, NumBytes+1, FieldNum);
  327. read_gr_ld(<<0:1, X:7, Tl/binary>>, N, Acc, NumBytes, FieldNum) ->
  328. Len = X bsl N + Acc,
  329. NumBytes1 = NumBytes + 1,
  330. <<_:Len/binary, Tl2/binary>> = Tl,
  331. read_gr_b(Tl2, 0, 0, NumBytes1 + Len, 0, FieldNum).
  332. merge_msgs(Prev, New, MsgName) when is_atom(MsgName) ->
  333. merge_msgs(Prev, New, MsgName, []).
  334. merge_msgs(Prev, New, MsgName, Opts) ->
  335. TrUserData = proplists:get_value(user_data, Opts),
  336. case MsgName of
  337. 'Signed' -> merge_msg_Signed(Prev, New, TrUserData)
  338. end.
  339. -compile({nowarn_unused_function,merge_msg_Signed/3}).
  340. merge_msg_Signed(#{} = PMsg,
  341. #{payload := NFpayload} = NMsg, _) ->
  342. S1 = #{payload => NFpayload},
  343. case {PMsg, NMsg} of
  344. {_, #{signature := NFsignature}} ->
  345. S1#{signature => NFsignature};
  346. {#{signature := PFsignature}, _} ->
  347. S1#{signature => PFsignature};
  348. _ -> S1
  349. end.
  350. verify_msg(Msg, MsgName) when is_atom(MsgName) ->
  351. verify_msg(Msg, MsgName, []).
  352. verify_msg(Msg, MsgName, Opts) ->
  353. TrUserData = proplists:get_value(user_data, Opts),
  354. case MsgName of
  355. 'Signed' -> v_msg_Signed(Msg, [MsgName], TrUserData);
  356. _ -> mk_type_error(not_a_known_message, Msg, [])
  357. end.
  358. -compile({nowarn_unused_function,v_msg_Signed/3}).
  359. v_msg_Signed(#{payload := F1} = M, Path, TrUserData) ->
  360. v_type_bytes(F1, [payload | Path], TrUserData),
  361. case M of
  362. #{signature := F2} ->
  363. v_type_bytes(F2, [signature | Path], TrUserData);
  364. _ -> ok
  365. end,
  366. lists:foreach(fun (payload) -> ok;
  367. (signature) -> ok;
  368. (OtherKey) ->
  369. mk_type_error({extraneous_key, OtherKey}, M, Path)
  370. end,
  371. maps:keys(M)),
  372. ok;
  373. v_msg_Signed(M, Path, _TrUserData) when is_map(M) ->
  374. mk_type_error({missing_fields,
  375. [payload] -- maps:keys(M), 'Signed'},
  376. M, Path);
  377. v_msg_Signed(X, Path, _TrUserData) ->
  378. mk_type_error({expected_msg, 'Signed'}, X, Path).
  379. -compile({nowarn_unused_function,v_type_bytes/3}).
  380. v_type_bytes(B, _Path, _TrUserData) when is_binary(B) ->
  381. ok;
  382. v_type_bytes(B, _Path, _TrUserData) when is_list(B) ->
  383. ok;
  384. v_type_bytes(X, Path, _TrUserData) ->
  385. mk_type_error(bad_binary_value, X, Path).
  386. -compile({nowarn_unused_function,mk_type_error/3}).
  387. -spec mk_type_error(_, _, list()) -> no_return().
  388. mk_type_error(Error, ValueSeen, Path) ->
  389. Path2 = prettify_path(Path),
  390. erlang:error({gpb_type_error,
  391. {Error, [{value, ValueSeen}, {path, Path2}]}}).
  392. -compile({nowarn_unused_function,prettify_path/1}).
  393. prettify_path([]) -> top_level;
  394. prettify_path(PathR) ->
  395. list_to_atom(string:join(lists:map(fun atom_to_list/1,
  396. lists:reverse(PathR)),
  397. ".")).
  398. -compile({nowarn_unused_function,id/2}).
  399. -compile({inline,id/2}).
  400. id(X, _TrUserData) -> X.
  401. -compile({nowarn_unused_function,v_ok/3}).
  402. -compile({inline,v_ok/3}).
  403. v_ok(_Value, _Path, _TrUserData) -> ok.
  404. -compile({nowarn_unused_function,m_overwrite/3}).
  405. -compile({inline,m_overwrite/3}).
  406. m_overwrite(_Prev, New, _TrUserData) -> New.
  407. -compile({nowarn_unused_function,cons/3}).
  408. -compile({inline,cons/3}).
  409. cons(Elem, Acc, _TrUserData) -> [Elem | Acc].
  410. -compile({nowarn_unused_function,lists_reverse/2}).
  411. -compile({inline,lists_reverse/2}).
  412. 'lists_reverse'(L, _TrUserData) -> lists:reverse(L).
  413. -compile({nowarn_unused_function,'erlang_++'/3}).
  414. -compile({inline,'erlang_++'/3}).
  415. 'erlang_++'(A, B, _TrUserData) -> A ++ B.
  416. get_msg_defs() ->
  417. [{{msg, 'Signed'},
  418. [#{name => payload, fnum => 1, rnum => 2, type => bytes,
  419. occurrence => required, opts => []},
  420. #{name => signature, fnum => 2, rnum => 3,
  421. type => bytes, occurrence => optional, opts => []}]}].
  422. get_msg_names() -> ['Signed'].
  423. get_group_names() -> [].
  424. get_msg_or_group_names() -> ['Signed'].
  425. get_enum_names() -> [].
  426. fetch_msg_def(MsgName) ->
  427. case find_msg_def(MsgName) of
  428. Fs when is_list(Fs) -> Fs;
  429. error -> erlang:error({no_such_msg, MsgName})
  430. end.
  431. -spec fetch_enum_def(_) -> no_return().
  432. fetch_enum_def(EnumName) ->
  433. erlang:error({no_such_enum, EnumName}).
  434. find_msg_def('Signed') ->
  435. [#{name => payload, fnum => 1, rnum => 2, type => bytes,
  436. occurrence => required, opts => []},
  437. #{name => signature, fnum => 2, rnum => 3,
  438. type => bytes, occurrence => optional, opts => []}];
  439. find_msg_def(_) -> error.
  440. find_enum_def(_) -> error.
  441. -spec enum_symbol_by_value(_, _) -> no_return().
  442. enum_symbol_by_value(E, V) ->
  443. erlang:error({no_enum_defs, E, V}).
  444. -spec enum_value_by_symbol(_, _) -> no_return().
  445. enum_value_by_symbol(E, V) ->
  446. erlang:error({no_enum_defs, E, V}).
  447. get_service_names() -> [].
  448. get_service_def(_) -> error.
  449. get_rpc_names(_) -> error.
  450. find_rpc_def(_, _) -> error.
  451. -spec fetch_rpc_def(_, _) -> no_return().
  452. fetch_rpc_def(ServiceName, RpcName) ->
  453. erlang:error({no_such_rpc, ServiceName, RpcName}).
  454. get_package_name() -> undefined.
  455. gpb_version_as_string() ->
  456. "4.3.1".
  457. gpb_version_as_list() ->
  458. [4,3,1].