Struct GrpcErrorsAsFailures
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 validString.grpc-statusheader value can’t parsed into ani32.
All others are considered failures.
Implementations§
§impl GrpcErrorsAsFailures
impl GrpcErrorsAsFailures
pub const fn new() -> GrpcErrorsAsFailures
pub const fn new() -> GrpcErrorsAsFailures
Create a new GrpcErrorsAsFailures.
pub fn with_success(self, code: GrpcCode) -> GrpcErrorsAsFailures
pub fn with_success(self, code: GrpcCode) -> GrpcErrorsAsFailures
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 rama_http::layer::classify::{GrpcErrorsAsFailures, GrpcCode};
let classifier = GrpcErrorsAsFailures::new()
.with_success(GrpcCode::InvalidArgument)
.with_success(GrpcCode::NotFound);pub fn set_success(&mut self, code: GrpcCode) -> &mut GrpcErrorsAsFailures
pub fn set_success(&mut self, code: GrpcCode) -> &mut GrpcErrorsAsFailures
Change which gRPC codes are considered success.
Same as Self::with_success but without consuming self.
pub fn make_classifier() -> SharedClassifier<GrpcErrorsAsFailures>
pub fn make_classifier() -> SharedClassifier<GrpcErrorsAsFailures>
Returns a MakeClassifier that produces GrpcErrorsAsFailures.
This is a convenience function that simply calls SharedClassifier::new.
Trait Implementations§
§impl ClassifyResponse for GrpcErrorsAsFailures
impl ClassifyResponse for GrpcErrorsAsFailures
§type FailureClass = GrpcFailureClass
type FailureClass = GrpcFailureClass
§type ClassifyEos = GrpcEosErrorsAsFailures
type ClassifyEos = GrpcEosErrorsAsFailures
§fn classify_response<B>(
self,
res: &Response<B>,
) -> ClassifiedResponse<<GrpcErrorsAsFailures as ClassifyResponse>::FailureClass, <GrpcErrorsAsFailures as ClassifyResponse>::ClassifyEos>
fn classify_response<B>( self, res: &Response<B>, ) -> ClassifiedResponse<<GrpcErrorsAsFailures as ClassifyResponse>::FailureClass, <GrpcErrorsAsFailures as ClassifyResponse>::ClassifyEos>
§fn classify_error<E>(
self,
error: &E,
) -> <GrpcErrorsAsFailures as ClassifyResponse>::FailureClasswhere
E: Display,
fn classify_error<E>(
self,
error: &E,
) -> <GrpcErrorsAsFailures as ClassifyResponse>::FailureClasswhere
E: Display,
§fn map_failure_class<F, NewClass>(self, f: F) -> MapFailureClass<Self, F>
fn map_failure_class<F, NewClass>(self, f: F) -> MapFailureClass<Self, F>
§impl Clone for GrpcErrorsAsFailures
impl Clone for GrpcErrorsAsFailures
§fn clone(&self) -> GrpcErrorsAsFailures
fn clone(&self) -> GrpcErrorsAsFailures
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for GrpcErrorsAsFailures
impl Debug for GrpcErrorsAsFailures
§impl Default for GrpcErrorsAsFailures
impl Default for GrpcErrorsAsFailures
§fn default() -> GrpcErrorsAsFailures
fn default() -> 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§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more