Struct CachedResponse

Source
pub struct CachedResponse {
    pub parts: Parts,
    pub body: CachedBody,
    pub duration: Option<Duration>,
}
Expand description

Cached HTTP response.

Caching the body is handled by CachedBody.

Fields§

§parts: Parts

Response parts.

§body: CachedBody

Response body.

§duration: Option<Duration>

Optional duration.

Implementations§

Source§

impl CachedResponse

Source

pub async fn new_for<BodyT>( uri: &Uri, response: Response<BodyT>, declared_body_size: Option<usize>, preferred_encoding: Encoding, skip_encoding: bool, caching_configuration: &CachingConfiguration, encoding_configuration: &EncodingConfiguration, ) -> Result<Self, ErrorWithResponsePieces<ReadBodyError, BodyT>>
where BodyT: Body + Unpin, BodyT::Error: Into<CapturedError>,

Constructor.

Reads the response body and stores it as Bytes.

If known_body_size is not None then that’s the size we expect. Otherwise we’ll try to read to max_body_size and will expect at least min_body_size.

In either case we will return an error if the body wasn’t completely read (we won’t cache incomplete bodies!), together with ResponsePieces, which can be used by the caller to reconstruct the original response.

preferred_encoding is the encoding in which we want to store the body. If the response’s encoding is different from what we want then it will be reencoded, unless the XX-Encode header is “false”, in which case it’s as if preferred_encoding were Identity.

If an Identity is created during this reencoding then it will also be stored if keep_identity_encoding is true.

If the response doesn’t already have a Last-Modified header, we will set it to the current time.

Source

pub fn clone_with_body(&self, body: CachedBody) -> Self

Clone with new body.

Source

pub fn headers(&self) -> &HeaderMap

Headers.

Source

pub async fn to_response<BodyT>( &self, encoding: &Encoding, configuration: &EncodingConfiguration, ) -> Result<(Response<BodyT>, Option<Self>)>
where BodyT: Body + From<Bytes>,

Create a Response.

If we don’t have the specified encoding then we will reencode from another encoding, storing the result so that we won’t have to encode it again.

If an Identity is created during this reencoding then it will also be stored if keep_identity_encoding is true.

If the stored XX-Encode header is “false” then will ignore the specified encoding and return an Identity response.

Returns a modified clone if reencoding caused a new encoding to be stored. Note that cloning should be cheap due to our use of Bytes in the body.

Trait Implementations§

Source§

impl CacheWeight for CachedResponse

Source§

fn cache_weight(&self) -> usize

Cache weight as a byte count. Read more
Source§

impl Clone for CachedResponse

Source§

fn clone(&self) -> CachedResponse

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CachedResponse

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,