Skip to content

Latest commit

 

History

History
171 lines (133 loc) · 4.36 KB

reference.md

File metadata and controls

171 lines (133 loc) · 4.36 KB

Generated code reference

This documentation lists the functions generated with each Elixir structure associated to a protobuf message or enum.

Messages

Encode

@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.

Decode

@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.

Syntax

@spec syntax() :: atom
syntax()

Get the syntax of the protobuf message: :proto2 or :proto3.

Default values

@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.

Unknown fields

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.

Required fields

@spec required_fields() :: [atom]
required_fields()

Get the list of required fields.

Metadata

@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.

Enums

@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

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}