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§
Source§impl GrpcErrorsAsFailures
impl GrpcErrorsAsFailures
Sourcepub const fn new() -> Self
pub const 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 rama_http::layer::classify::{GrpcErrorsAsFailures, GrpcCode};
let classifier = GrpcErrorsAsFailures::new()
.with_success(GrpcCode::InvalidArgument)
.with_success(GrpcCode::NotFound);
Sourcepub fn set_success(&mut self, code: GrpcCode) -> &mut Self
pub fn set_success(&mut self, code: GrpcCode) -> &mut Self
Change which gRPC codes are considered success.
Same as Self::with_success
but without consuming self
.
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
Source§type ClassifyEos = GrpcEosErrorsAsFailures
type ClassifyEos = GrpcEosErrorsAsFailures
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>
Source§fn classify_error<E>(self, error: &E) -> Self::FailureClasswhere
E: Display,
fn classify_error<E>(self, error: &E) -> Self::FailureClasswhere
E: Display,
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>
Source§impl Clone for GrpcErrorsAsFailures
impl Clone for GrpcErrorsAsFailures
Source§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 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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
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> 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