Module fastly::handle

source ·
Expand description

Low-level interfaces to the Compute APIs.

For most applications, you should instead use the types in the top level of the crate, such as Request and Response. Future SDKs will not include these interfaces.

§Reasons not to use handles

  • The high-level interface has many more conveniences for application development. For example, there are methods for transparently reading and writing HTTP bodies as JSON, and common function argument types such as header values can accept and convert a variety of types automatically.

  • BodyHandle and StreamingBodyHandle are unbuffered. Performance can suffer dramatically if repeated small reads and writes are made to these types. The higher-level equivalents, Body and StreamingBody are buffered automatically, though you can explicitly control some aspects of the buffering using std::io::BufRead and std::io::Write::flush().

  • Explicit buffer sizes are required to get data such as header values from the Compute host. If the size you choose isn’t large enough, the operation will fail with an error and make you try again. The high-level interfaces automatically retry any such operations with the necessary buffer sizes.

  • The high-level interface keeps data about a request or response in WebAssembly memory until it is sent to the client or a backend, whereas the handle interface is backed by memory in the Compute host.

    Suppose your application needs to manipulate headers in multiple functions. The handle interface would require you to either manually keep track of the headers separately from the handle they came from, or perform redundant copies to and from WebAssembly memory. The high-level interface would keep all of your header information in WebAssembly until it’s ready to use, improving performance.

Re-exports§

  • pub use crate::http::request::handle::client_h2_fingerprint;
  • pub use crate::http::request::handle::client_oh_fingerprint;
  • pub use crate::http::request::handle::client_request_id;

Modules§

  • Low-level Compute Config Store interfaces.
  • dictionaryDeprecated
    Low-level Compute Dictionary interfaces.

Structs§

Enums§

Functions§