use bytes::Buf;
use http::{HeaderMap, Request, Response};
use tower_http::classify::ClassifiedResponse;
mod body;
mod future;
pub mod layer;
pub mod service;
pub trait Callbacks<FailureClass>: Sized {
type Data;
fn prepare<B>(&mut self, request: &Request<B>) -> Self::Data;
#[inline]
fn on_response<B>(
&mut self,
_response: &Response<B>,
_classification: ClassifiedResponse<FailureClass, ()>,
_data: &mut Self::Data,
) {
}
#[inline]
fn on_eos(
self,
_trailers: Option<&HeaderMap>,
_classification: Result<(), FailureClass>,
_data: Self::Data,
) {
}
fn on_failure(
self,
_failed_at: FailedAt,
_failure_classification: FailureClass,
_data: &mut Self::Data,
) {
}
}
pub trait OnBodyChunk<B: Buf> {
type Data;
#[inline]
fn call(&mut self, _body: &B, _exact_body_size: Option<u64>, _data: &mut Self::Data) {}
}
#[derive(Debug)]
pub enum FailedAt {
Response,
Body,
Trailers,
}