This documentation lists the functions generated with each Elixir structure associated to a protobuf message or enum.
@spec encode(struct) :: {:ok, iodata} | {:error, any}
encode(msg)
Encode msg
into an iodata
suitable for files or sockets.
Returns {:ok, iodata}
when the encoding was successful and {:error, description}
in case of an encoding error.
@spec encode!(struct) :: iodata | no_return
encode!(msg)
Throwing version of encode/1
.
@spec decode(binary) :: {:ok, struct} | {:error, any}
decode(data)
Decode binary data
into an structure with the type of the module on which this function is called.
Returns {:ok, msg}
when the decoding was successful and {:error, description}
in case of an decoding error.
@spec decode!(binary) :: struct | no_return
decode!(data)
Throwing version of decode/1
.
@spec syntax() :: atom
syntax()
Get the syntax of the protobuf message: :proto2
or :proto3
.
@spec default(atom) :: {:ok, boolean | integer | String.t() | binary | float} | {:error, atom}
default(field_name)
Get the default value of a message field. Note that for Protobuf 3, the default value is mandated by the Google reference documentation.
Note: these functions are not available when the option :keep_unknown_fields
is set to false
.
@spec clear_unknown_fields(struct) :: struct
clear_unknown_fields(msg)
Returns a copy of msg
with all unknown fields removed.
@spec unknown_fields(struct) :: [{non_neg_integer, Protox.Types.tag(), binary}]
unknown_fields(msg)
Get the unknown fields that may have been encountered when decoding data.
See Types section to get a description of Protox.Types.tag
.
@spec unknown_fields_name() :: atom
unknown_fields_name(msg)
Get the name of the field that stores unknown fields.
@spec required_fields() :: [atom]
required_fields()
Get the list of required fields.
@spec file_options() :: struct() | nil
file_options()
Get the options set in *.proto
files (see the Google reference documentation). Returns a FileOption
structure. All messages of a same file share the same options.
@spec default() :: atom
default()
Get the default value of an enum.
@spec encode(atom) :: integer | atom
encode(enum_entry)
Get the integer value of an enum entry. If enum_entry
does not exist in the enum, it is returned as is.
@spec decode(integer) :: atom | integer
decode(value)
Get the enum entry of an integer value. If value
does not correpond to any entry in the enum, it is returned as is.
@spec constants() :: [{integer, atom}]
constants()
Get the list of all the constants of the enum that correponds to the module on which this function has been called.
Types Protox.Types.tag
, Protox.Types.kind
and Protox.Types.type
are defined as follows
(see here for more details):
@type wire_varint :: 0
@type wire_64bits :: 1
@type wire_delimited :: 2
@type wire_32bits :: 5
@type tag :: wire_varint | wire_64bits | wire_delimited | wire_32bits
@type kind :: {:scalar, any} | :packed | :unpacked | :map | {:oneof, atom}
@type map_key_type ::
:int32
| :int64
| :uint32
| :uint64
| :sint32
| :sint64
| :fixed32
| :fixed64
| :sfixed32
| :sfixed64
| :bool
| :string
@type type ::
:fixed32
| :sfixed32
| :float
| :fixed64
| :sfixed64
| :double
| :int32
| :uint32
| :sint32
| :int64
| :uint64
| :sint64
| :bool
| :string
| :bytes
| {:enum, atom}
| {:message, atom}
| {map_key_type, type}