pub trait StreamingCacheManager:
Send
+ Sync
+ 'static {
type Body: Body + Send + 'static;
// Required methods
fn get<'life0, 'life1, 'async_trait>(
&'life0 self,
cache_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<(Response<Self::Body>, CachePolicy)>>> + Send + 'async_trait>>
where <Self::Body as Body>::Data: Send,
<Self::Body as Body>::Error: Into<StreamingError> + Send + Sync + 'static,
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn put<'life0, 'async_trait, B>(
&'life0 self,
cache_key: String,
response: Response<B>,
policy: CachePolicy,
request_url: Url,
metadata: Option<Vec<u8>>,
) -> Pin<Box<dyn Future<Output = Result<Response<Self::Body>>> + Send + 'async_trait>>
where B: Body + Send + 'static + 'async_trait,
B::Data: Send,
B::Error: Into<StreamingError>,
<Self::Body as Body>::Data: Send,
<Self::Body as Body>::Error: Into<StreamingError> + Send + Sync + 'static,
Self: 'async_trait,
'life0: 'async_trait;
fn convert_body<'life0, 'async_trait, B>(
&'life0 self,
response: Response<B>,
) -> Pin<Box<dyn Future<Output = Result<Response<Self::Body>>> + Send + 'async_trait>>
where B: Body + Send + 'static + 'async_trait,
B::Data: Send,
B::Error: Into<StreamingError>,
<Self::Body as Body>::Data: Send,
<Self::Body as Body>::Error: Into<StreamingError> + Send + Sync + 'static,
Self: 'async_trait,
'life0: 'async_trait;
fn delete<'life0, 'life1, 'async_trait>(
&'life0 self,
cache_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn empty_body(&self) -> Self::Body;
}Expand description
A streaming cache manager that supports streaming request/response bodies without buffering them in memory. This is ideal for large responses.
Required Associated Types§
Required Methods§
Sourcefn get<'life0, 'life1, 'async_trait>(
&'life0 self,
cache_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<(Response<Self::Body>, CachePolicy)>>> + Send + 'async_trait>>
fn get<'life0, 'life1, 'async_trait>( &'life0 self, cache_key: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<Option<(Response<Self::Body>, CachePolicy)>>> + Send + 'async_trait>>
Attempts to pull a cached response and related policy from cache with streaming body.
Sourcefn put<'life0, 'async_trait, B>(
&'life0 self,
cache_key: String,
response: Response<B>,
policy: CachePolicy,
request_url: Url,
metadata: Option<Vec<u8>>,
) -> Pin<Box<dyn Future<Output = Result<Response<Self::Body>>> + Send + 'async_trait>>
fn put<'life0, 'async_trait, B>( &'life0 self, cache_key: String, response: Response<B>, policy: CachePolicy, request_url: Url, metadata: Option<Vec<u8>>, ) -> Pin<Box<dyn Future<Output = Result<Response<Self::Body>>> + Send + 'async_trait>>
Attempts to cache a response with a streaming body and related policy.
Sourcefn convert_body<'life0, 'async_trait, B>(
&'life0 self,
response: Response<B>,
) -> Pin<Box<dyn Future<Output = Result<Response<Self::Body>>> + Send + 'async_trait>>
fn convert_body<'life0, 'async_trait, B>( &'life0 self, response: Response<B>, ) -> Pin<Box<dyn Future<Output = Result<Response<Self::Body>>> + Send + 'async_trait>>
Converts a generic body to the manager’s body type for non-cacheable responses. This is called when a response should not be cached but still needs to be returned with the correct body type.
Sourcefn delete<'life0, 'life1, 'async_trait>(
&'life0 self,
cache_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete<'life0, 'life1, 'async_trait>(
&'life0 self,
cache_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Attempts to remove a record from cache.
Sourcefn empty_body(&self) -> Self::Body
fn empty_body(&self) -> Self::Body
Creates an empty body of the manager’s body type. Used for returning 504 Gateway Timeout responses on OnlyIfCached cache misses.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.