Struct ResponseVersionAdaptCtx
pub struct ResponseVersionAdaptCtx {
pub version: Version,
pub connect_protocol: Option<Protocol>,
pub websocket_key: Option<SecWebSocketKey>,
}http and std only.Expand description
Request-derived state, captured before a request is sent, that a response may
need in order to be translated back to the original request Version.
The motivating case is the WebSocket handshake: an HTTP/1 101 Switching Protocols accept carries Sec-WebSocket-Accept, which is a signature of the
request’s Sec-WebSocket-Key. That key lives only on the request, so it cannot be
reconstructed from an HTTP/2 200 response alone, it must be captured here.
Fields§
§version: VersionOriginal version the request had
connect_protocol: Option<Protocol>The Extended CONNECT / Upgrade application protocol the request asked for
(e.g. websocket), if any. Captured from the request’s :protocol extension
(HTTP/2/3 CONNECT) or Upgrade header (HTTP/1).
websocket_key: Option<SecWebSocketKey>The request’s Sec-WebSocket-Key, needed to recompute Sec-WebSocket-Accept
when reconstructing an HTTP/1 WebSocket handshake response.
Implementations§
§impl ResponseVersionAdaptCtx
impl ResponseVersionAdaptCtx
pub fn from_request<Body>(request: &Request<Body>) -> ResponseVersionAdaptCtx
pub fn from_request<Body>(request: &Request<Body>) -> ResponseVersionAdaptCtx
Capture the ResponseVersionAdaptCtx from an outgoing request.
Trait Implementations§
§impl Clone for ResponseVersionAdaptCtx
impl Clone for ResponseVersionAdaptCtx
§fn clone(&self) -> ResponseVersionAdaptCtx
fn clone(&self) -> ResponseVersionAdaptCtx
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for ResponseVersionAdaptCtx
impl Debug for ResponseVersionAdaptCtx
§impl Default for ResponseVersionAdaptCtx
impl Default for ResponseVersionAdaptCtx
§fn default() -> ResponseVersionAdaptCtx
fn default() -> ResponseVersionAdaptCtx
Auto Trait Implementations§
impl !Freeze for ResponseVersionAdaptCtx
impl RefUnwindSafe for ResponseVersionAdaptCtx
impl Send for ResponseVersionAdaptCtx
impl Sync for ResponseVersionAdaptCtx
impl Unpin for ResponseVersionAdaptCtx
impl UnsafeUnpin for ResponseVersionAdaptCtx
impl UnwindSafe for ResponseVersionAdaptCtx
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a rama_grpc::Request§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