pub struct GrpcErrorsAsFailures { /* private fields */ }Expand description
Response classifier for gRPC responses.
gRPC doesn’t use normal HTTP statuses for indicating success or failure but instead a special header that might appear in a trailer.
Responses are considered successful if
- grpc-statusheader value contains a success value.
- grpc-statusheader is missing.
- grpc-statusheader value isn’t a valid- String.
- grpc-statusheader value can’t parsed into an- i32.
All others are considered failures.
Implementations§
Source§impl GrpcErrorsAsFailures
 
impl GrpcErrorsAsFailures
Sourcepub fn new() -> Self
 
pub fn new() -> Self
Create a new GrpcErrorsAsFailures.
Sourcepub fn with_success(self, code: GrpcCode) -> Self
 
pub fn with_success(self, code: GrpcCode) -> Self
Change which gRPC codes are considered success.
Defaults to only considering Ok as success.
Ok will always be considered a success.
§Example
Servers might not want to consider Invalid Argument or Not Found as failures since
thats likely the clients fault:
use tower_http::classify::{GrpcErrorsAsFailures, GrpcCode};
let classifier = GrpcErrorsAsFailures::new()
    .with_success(GrpcCode::InvalidArgument)
    .with_success(GrpcCode::NotFound);Sourcepub fn make_classifier() -> SharedClassifier<Self>
 
pub fn make_classifier() -> SharedClassifier<Self>
Returns a MakeClassifier that produces GrpcErrorsAsFailures.
This is a convenience function that simply calls SharedClassifier::new.
Trait Implementations§
Source§impl ClassifyResponse for GrpcErrorsAsFailures
 
impl ClassifyResponse for GrpcErrorsAsFailures
Source§type FailureClass = GrpcFailureClass
 
type FailureClass = GrpcFailureClass
The type returned when a response is classified as a failure. Read more
Source§type ClassifyEos = GrpcEosErrorsAsFailures
 
type ClassifyEos = GrpcEosErrorsAsFailures
The type used to classify the response end of stream (EOS).
Source§fn classify_response<B>(
    self,
    res: &Response<B>,
) -> ClassifiedResponse<Self::FailureClass, Self::ClassifyEos>
 
fn classify_response<B>( self, res: &Response<B>, ) -> ClassifiedResponse<Self::FailureClass, Self::ClassifyEos>
Attempt to classify the beginning of a response. Read more
Source§fn classify_error<E>(self, error: &E) -> Self::FailureClasswhere
    E: Display + 'static,
 
fn classify_error<E>(self, error: &E) -> Self::FailureClasswhere
    E: Display + 'static,
Classify an error. Read more
Source§fn map_failure_class<F, NewClass>(self, f: F) -> MapFailureClass<Self, F>
 
fn map_failure_class<F, NewClass>(self, f: F) -> MapFailureClass<Self, F>
Transform the failure classification using a function. Read more
Source§impl Clone for GrpcErrorsAsFailures
 
impl Clone for GrpcErrorsAsFailures
Source§fn clone(&self) -> GrpcErrorsAsFailures
 
fn clone(&self) -> GrpcErrorsAsFailures
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
 
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from 
source. Read moreSource§impl Debug for GrpcErrorsAsFailures
 
impl Debug for GrpcErrorsAsFailures
Auto Trait Implementations§
impl Freeze for GrpcErrorsAsFailures
impl RefUnwindSafe for GrpcErrorsAsFailures
impl Send for GrpcErrorsAsFailures
impl Sync for GrpcErrorsAsFailures
impl Unpin for GrpcErrorsAsFailures
impl UnwindSafe for GrpcErrorsAsFailures
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
 
impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
    T: Clone,
 
impl<T> CloneToUninit for Twhere
    T: Clone,
Source§impl<T> Instrument for T
 
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
 
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
 
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> ServiceExt for T
 
impl<T> ServiceExt for T
Source§fn trace_for_http(self) -> Trace<Self, HttpMakeClassifier>where
    Self: Sized,
 
fn trace_for_http(self) -> Trace<Self, HttpMakeClassifier>where
    Self: Sized,
High level tracing that classifies responses using HTTP status codes. Read more
Source§fn trace_for_grpc(self) -> Trace<Self, GrpcMakeClassifier>where
    Self: Sized,
 
fn trace_for_grpc(self) -> Trace<Self, GrpcMakeClassifier>where
    Self: Sized,
High level tracing that classifies responses using gRPC headers. Read more
Source§fn override_request_header<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> SetRequestHeader<Self, M>where
    Self: Sized,
 
fn override_request_header<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> SetRequestHeader<Self, M>where
    Self: Sized,
Insert a header into the request. Read more
Source§fn append_request_header<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> SetRequestHeader<Self, M>where
    Self: Sized,
 
fn append_request_header<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> SetRequestHeader<Self, M>where
    Self: Sized,
Append a header into the request. Read more
Source§fn insert_request_header_if_not_present<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> SetRequestHeader<Self, M>where
    Self: Sized,
 
fn insert_request_header_if_not_present<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> SetRequestHeader<Self, M>where
    Self: Sized,
Insert a header into the request, if the header is not already present. Read more
Source§fn override_response_header<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> SetResponseHeader<Self, M>where
    Self: Sized,
 
fn override_response_header<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> SetResponseHeader<Self, M>where
    Self: Sized,
Insert a header into the response. Read more
Source§fn append_response_header<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> SetResponseHeader<Self, M>where
    Self: Sized,
 
fn append_response_header<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> SetResponseHeader<Self, M>where
    Self: Sized,
Append a header into the response. Read more
Source§fn insert_response_header_if_not_present<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> SetResponseHeader<Self, M>where
    Self: Sized,
 
fn insert_response_header_if_not_present<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> SetResponseHeader<Self, M>where
    Self: Sized,
Insert a header into the response, if the header is not already present. Read more
Source§fn set_request_id<M>(
    self,
    header_name: HeaderName,
    make_request_id: M,
) -> SetRequestId<Self, M>where
    Self: Sized,
    M: MakeRequestId,
 
fn set_request_id<M>(
    self,
    header_name: HeaderName,
    make_request_id: M,
) -> SetRequestId<Self, M>where
    Self: Sized,
    M: MakeRequestId,
Add request id header and extension. Read more
Source§fn set_x_request_id<M>(self, make_request_id: M) -> SetRequestId<Self, M>where
    Self: Sized,
    M: MakeRequestId,
 
fn set_x_request_id<M>(self, make_request_id: M) -> SetRequestId<Self, M>where
    Self: Sized,
    M: MakeRequestId,
Add request id header and extension, using 
x-request-id as the header name. Read moreSource§fn propagate_request_id(
    self,
    header_name: HeaderName,
) -> PropagateRequestId<Self>where
    Self: Sized,
 
fn propagate_request_id(
    self,
    header_name: HeaderName,
) -> PropagateRequestId<Self>where
    Self: Sized,
Propgate request ids from requests to responses. Read more
Source§fn propagate_x_request_id(self) -> PropagateRequestId<Self>where
    Self: Sized,
 
fn propagate_x_request_id(self) -> PropagateRequestId<Self>where
    Self: Sized,
Propgate request ids from requests to responses, using 
x-request-id as the header name. Read more