Module fidl::encoding

source ·
Expand description

FIDL encoding and decoding.

Macros§

Structs§

  • A fake FIDL type that can encode from and decode into any Rust type. This exists solely to prevent the compiler from inferring T: TypeMarker, allowing us to add new generic impls without source breakage. It also improves error messages when no suitable T: TypeMarker exists, preventing spurious guesses about what you should do (e.g. implement HandleBased).
  • Like Ambiguous1. There needs to be two of these types so that the compiler doesn’t infer one of them and generate a call to the panicking methods.
  • The FIDL type array<T, N>.
  • Bitflags type for transaction header at-rest flags.
  • The FIDL type string:N.
  • The FIDL type box<T>.
  • Context for encoding and decoding.
  • Decoding state
  • Bitflags type to flags that aid in dynamically identifying features of the request.
  • A FIDL type representing an empty payload (0 bytes).
  • The FIDL type used for an empty success variant in a result union. Result unions occur in two-way methods that are flexible or that use error syntax.
  • Encoding state
  • The body of a FIDL Epitaph
  • The FIDL union generated for flexible two-way methods with errors.
  • The FIDL union generated for flexible two-way methods without errors.
  • A struct which encodes as GenericMessageType<H, T> where E: Encode<T>.
  • The FIDL type for a message consisting of a header H and body T.
  • The FIDL type zx.Handle:<OBJECT_TYPE, RIGHTS>, or a client_end or server_end.
  • The FIDL type T:optional where T is a vector, string, handle, or client/server end.
  • The FIDL type T:optional where T is a union.
  • The FIDL union generated for strict two-way methods with errors.
  • Header for transactional FIDL messages
  • The FIDL type vector<T>:N.

Enums§

  • An uninhabited type used as owned and borrowed type for ambiguous markers. Can be replaced by ! once that is stable.
  • Internal FIDL framework error type used to identify unknown methods.
  • The owned type for GenericMessageType is uninhabited because we never decode full messages. We decode the header and body separately, as we usually we don’t know the body’s type until after we’ve decoded the header.
  • Wire format version to use during encode / decode.

Constants§

  • Indicates that an optional value is absent.
  • Indicates that an optional value is absent.
  • Indicates that an optional value is present.
  • Indicates that an optional value is present.
  • Special ordinal signifying an epitaph message.
  • The current wire format magic number
  • The maximum vector bound, corresponding to the MAX constraint in FIDL.
  • The maximum number of handles allowed in a FIDL message. Note that this number is one less for large messages for the time being. See (https://fxbug.dev/42068341) for progress, or to report problems caused by this specific limitation.
  • The maximum recursion depth of encoding and decoding. Each pointer to an out-of-line object counts as one step in the recursion depth.

Traits§

Functions§

  • Decodes the transaction header from a message. Returns the header and a reference to the tail of the message.
  • Acquire a mutable reference to the thread-local buffers used for decoding.
  • Acquire a mutable reference to the thread-local buffers used for encoding.
  • Encodes the provided type into the thread-local encoding buffers.

Type Aliases§

  • An abbreviation of HandleType that for channels with default rights, used for the FIDL types client_end:P and server_end:P.
  • A struct which encodes as TransactionMessageType<T> where E: Encode<T>.
  • The FIDL type for a transaction message with body T.
  • The FIDL type string or string:MAX.
  • The FIDL type vector<T> or vector<T>:MAX.