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-status
header value contains a success value.grpc-status
header is missing.grpc-status
header value isn’t a validString
.grpc-status
header 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