[][src]Crate body_image_futio

Asynchronous HTTP integration for body-image.

The body-image-futio crate integrates body-image with futures, http, hyper, and tokio 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() functions, 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 blocking_permit::DispatchPool registered with the current thread.

DispatchBodySink

Extends AsyncBodySink by further dispatching any blocking file write operations to a blocking_permit::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.

StatefulArbiter

A stateful arbiter that records the need to block 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.

fetch

Run an HTTP request to completion, returning the full Dialog.

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.

request_dialog

Given a suitable hyper::Client and RequestRecord, return a Future with Dialog output.

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.

SplitBodyImage

Extends AsyncBodyImage by splitting buffers and yielding.

YieldBodyImage

Extends AsyncBodyImage by periodically yielding.