[][src]Crate body_image_futio

Asynchronous HTTP integration for body-image.

The body-image-futio crate integrates the body-image crate with futures, http, hyper, and tokio crates for both client and server use.

  • Trait RequestRecorder extends http::request::Builder for recording a RequestRecord of various body types, which can then be passed to request_dialog or fetch.

  • The fetch function runs a RequestRecord and returns a completed Dialog using a single-use client and runtime for request_dialog.

  • The request_dialog function returns a Future with Dialog output, given a suitable hyper::Client reference and RequestRecord. This function is thus more composable for complete tokio applications.

  • AsyncBodyImage adapts a BodyImage for asynchronous output as a Stream and http_body::Body.

  • AsyncBodySink adapts a BodySink for asynchronous input from a (e.g. hyper::Body) Stream.

  • The decode_res_body and associated functions will decompress any supported Transfer/Content-Encoding of the response body and update the Dialog accordingly.

Optional Features

The following features may be enabled or disabled at build time. All are enabled by default.

mmap: Adds zero-copy memory map support, via a UniBodyBuf type usable with all Stream and Sink types.

brotli: Adds the brotli compression algorithm to ACCEPT_ENCODINGS and decompression support in decode_res_body.

hyper-http: Adds Hyper based fetch and request_dialog methods, as well as a RequestRecorder implementation for hyper::Body (its "default" http_body::Body type).

Structs

AsyncBodyImage

Adaptor for BodyImage, implementing the futures::Stream and http_body::Body traits.

AsyncBodySink

Adaptor for BodySink, implementing the futures::Sink trait.

DispatchBodyImage

Extends AsyncBodyImage by further dispatching any blocking file read operations to a DispatchPool registered with the current thread.

DispatchBodySink

Extends AsyncBodySink by further dispatching any blocking file write operations to a DispatchPool registered with the current thread.

FutioTunables

An additional set of tuning constants for asynchronous I/O, extending the body-image Tunables set.

FutioTuner

A builder for FutioTunables.

LenientArbiter

A lenient arbiter that always allows blocking.

PermitBodyImage

Extends AsyncBodyImage by acquiring a blocking permit before performing any blocking file read operations.

PermitBodySink

Extends AsyncBodySink by acquiring a blocking permit before performing any blocking file write operations.

RequestRecord

An http::Request and recording. Note that other important getter methods for RequestRecord are found in trait implementation RequestRecorded.

StatefulArbiter

A stateful arbiter that records the need to block and and grants one-time allowances.

UniBodyBuf

Provides zero-copy read access to both Bytes and memory mapped regions (MemMapBuf). Implements bytes::Buf (mmap feature only).

Enums

Blocking

All possible states of a BlockingArbiter.

BlockingPolicy

The policy for blocking operations.

FutioError

Error enumeration for body-image-futio origin errors. This may be extended in the future so exhaustive matching is gently discouraged with an unused variant.

Statics

ACCEPT_ENCODINGS

Appropriate value for the HTTP accept-encoding request header, including (br)otli when the brotli feature is configured.

BROWSE_ACCEPT

A browser-like HTTP accept request header value, with preference for hypertext.

VERSION

The crate version string.

Traits

BlockingArbiter

Trait for arbitration of where blocking operations are acceptable to the runtime.

InputBuf

Trait qualifying Sink<Item> buffer requirements.

OutputBuf

Trait qualifying Stream Item-type buffer requirments.

RequestRecorder

Extension trait for http::request::Builder, to enable recording key portions of the request for the final Dialog.

SinkWrapper

Trait for generic construction of Sink wrapper types.

StreamWrapper

Trait for generic construction of Stream wrapper types.

Functions

decode_res_body

Decode the response body of the provided Dialog compressed with any supported Encoding, updated the dialog accordingly. The provided Tunables controls decompression buffer sizes and if the final BodyImage will be in Ram or FsRead. Returns Ok(true) if the response body was decoded, or Ok(false) if no encoding was found, or an error on failure, including from an unsupported Encoding.

fetch

Run an HTTP request to completion, returning the full Dialog. This function constructs a tokio Runtime (ThreadPool), hyper_tls::HttpsConnector, and hyper::Client in a simplistic form internally, waiting with timeout, and dropping these on completion.

find_chunked

Return true if the chunked Transfer-Encoding can be found in the headers.

find_encodings

Return a list of relevant encodings from the headers Transfer-Encoding and Content-Encoding. The Chunked encoding will be the first value if found. At most one compression encoding will be the last value if found.

request_dialog

Given a suitable hyper::Client and RequestRecord, return a Future with Dialog output. The provided FutioTunables governs timeout intervals (initial response and complete body), if the response BodyImage will be in Ram or FsRead, and BlockingPolicy.

user_agent

Return a generic HTTP user-agent header value for the crate, with version

Type Definitions

Flaw

Conveniently compact type alias for dyn Trait std::error::Error. It is possible to query and downcast the type via methods of std::any::Any.