Struct WebSocketBridge
pub struct WebSocketBridge<Ingress, Egress> {
pub ingress: Ingress,
pub egress: Egress,
}Available on crate features
http and std and ws only.Expand description
A pair of established WebSocket message transports joined by a relay.
The ingress side faces the downstream client and uses the server protocol
role. The egress side faces the upstream server and uses the client role.
Keeping this boundary distinct from BridgeIo lets ordinary Rama layers
decorate complete WebSocket messages without entering the protocol runtime
or decoding raw bytes themselves. The bridge deliberately does not select
one side as its extension source; use Self::ingress or Self::egress
to access the intended transport explicitly.
Fields§
§ingress: IngressMessage transport facing the downstream client.
egress: EgressMessage transport facing the upstream server.
Trait Implementations§
§impl<Ingress, Egress> Debug for WebSocketBridge<Ingress, Egress>
impl<Ingress, Egress> Debug for WebSocketBridge<Ingress, Egress>
§impl<S, Ingress, Egress> Service<WebSocketBridge<Ingress, Egress>> for WebSocketRelayService<S>where
S: Service<WebSocketRelayInput>,
<S as Service<WebSocketRelayInput>>::Output: Into<WebSocketRelayOutput>,
<S as Service<WebSocketRelayInput>>::Error: Into<Box<dyn Error + Sync + Send>>,
Ingress: WebSocketIo,
Egress: WebSocketIo,
impl<S, Ingress, Egress> Service<WebSocketBridge<Ingress, Egress>> for WebSocketRelayService<S>where
S: Service<WebSocketRelayInput>,
<S as Service<WebSocketRelayInput>>::Output: Into<WebSocketRelayOutput>,
<S as Service<WebSocketRelayInput>>::Error: Into<Box<dyn Error + Sync + Send>>,
Ingress: WebSocketIo,
Egress: WebSocketIo,
§type Error = Infallible
type Error = Infallible
The type of error returned by the service.
§async fn serve(
&self,
__arg1: WebSocketBridge<Ingress, Egress>,
) -> Result<<WebSocketRelayService<S> as Service<WebSocketBridge<Ingress, Egress>>>::Output, <WebSocketRelayService<S> as Service<WebSocketBridge<Ingress, Egress>>>::Error>
async fn serve( &self, __arg1: WebSocketBridge<Ingress, Egress>, ) -> Result<<WebSocketRelayService<S> as Service<WebSocketBridge<Ingress, Egress>>>::Output, <WebSocketRelayService<S> as Service<WebSocketBridge<Ingress, Egress>>>::Error>
Serve an output or an error for the given input
§fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
Box this service to allow for dynamic dispatch.
§impl<S, Ingress, Egress> Service<WebSocketBridge<Ingress, Egress>> for WebSocketRelayEventService<S>where
S: Service<WebSocketRelayEventInput>,
<S as Service<WebSocketRelayEventInput>>::Output: Into<WebSocketRelayEventOutput>,
<S as Service<WebSocketRelayEventInput>>::Error: Into<Box<dyn Error + Sync + Send>>,
Ingress: WebSocketIo,
Egress: WebSocketIo,
impl<S, Ingress, Egress> Service<WebSocketBridge<Ingress, Egress>> for WebSocketRelayEventService<S>where
S: Service<WebSocketRelayEventInput>,
<S as Service<WebSocketRelayEventInput>>::Output: Into<WebSocketRelayEventOutput>,
<S as Service<WebSocketRelayEventInput>>::Error: Into<Box<dyn Error + Sync + Send>>,
Ingress: WebSocketIo,
Egress: WebSocketIo,
§type Error = Infallible
type Error = Infallible
The type of error returned by the service.
§async fn serve(
&self,
__arg1: WebSocketBridge<Ingress, Egress>,
) -> Result<<WebSocketRelayEventService<S> as Service<WebSocketBridge<Ingress, Egress>>>::Output, <WebSocketRelayEventService<S> as Service<WebSocketBridge<Ingress, Egress>>>::Error>
async fn serve( &self, __arg1: WebSocketBridge<Ingress, Egress>, ) -> Result<<WebSocketRelayEventService<S> as Service<WebSocketBridge<Ingress, Egress>>>::Output, <WebSocketRelayEventService<S> as Service<WebSocketBridge<Ingress, Egress>>>::Error>
Serve an output or an error for the given input
§fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
Box this service to allow for dynamic dispatch.
§impl<Inner, Ingress, Egress> Service<WebSocketBridge<Ingress, Egress>> for HARWebSocketService<Inner>where
Inner: Service<WebSocketBridge<HARWebSocket<Ingress>, HARWebSocket<Egress>>>,
Ingress: WebSocketIo,
Egress: WebSocketIo,
impl<Inner, Ingress, Egress> Service<WebSocketBridge<Ingress, Egress>> for HARWebSocketService<Inner>where
Inner: Service<WebSocketBridge<HARWebSocket<Ingress>, HARWebSocket<Egress>>>,
Ingress: WebSocketIo,
Egress: WebSocketIo,
§type Output = <Inner as Service<WebSocketBridge<HARWebSocket<Ingress>, HARWebSocket<Egress>>>>::Output
type Output = <Inner as Service<WebSocketBridge<HARWebSocket<Ingress>, HARWebSocket<Egress>>>>::Output
The type of the output returned by the service.
§type Error = <Inner as Service<WebSocketBridge<HARWebSocket<Ingress>, HARWebSocket<Egress>>>>::Error
type Error = <Inner as Service<WebSocketBridge<HARWebSocket<Ingress>, HARWebSocket<Egress>>>>::Error
The type of error returned by the service.
§async fn serve(
&self,
__arg1: WebSocketBridge<Ingress, Egress>,
) -> Result<<HARWebSocketService<Inner> as Service<WebSocketBridge<Ingress, Egress>>>::Output, <HARWebSocketService<Inner> as Service<WebSocketBridge<Ingress, Egress>>>::Error>
async fn serve( &self, __arg1: WebSocketBridge<Ingress, Egress>, ) -> Result<<HARWebSocketService<Inner> as Service<WebSocketBridge<Ingress, Egress>>>::Output, <HARWebSocketService<Inner> as Service<WebSocketBridge<Ingress, Egress>>>::Error>
Serve an output or an error for the given input
§fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
Box this service to allow for dynamic dispatch.
Auto Trait Implementations§
impl<Ingress, Egress> Freeze for WebSocketBridge<Ingress, Egress>
impl<Ingress, Egress> RefUnwindSafe for WebSocketBridge<Ingress, Egress>where
Ingress: RefUnwindSafe,
Egress: RefUnwindSafe,
impl<Ingress, Egress> Send for WebSocketBridge<Ingress, Egress>
impl<Ingress, Egress> Sync for WebSocketBridge<Ingress, Egress>
impl<Ingress, Egress> Unpin for WebSocketBridge<Ingress, Egress>
impl<Ingress, Egress> UnsafeUnpin for WebSocketBridge<Ingress, Egress>where
Ingress: UnsafeUnpin,
Egress: UnsafeUnpin,
impl<Ingress, Egress> UnwindSafe for WebSocketBridge<Ingress, Egress>where
Ingress: UnwindSafe,
Egress: UnwindSafe,
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
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§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> ⓘ
Converts
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> ⓘ
Converts
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>
Wrap the input message
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>
Create a new
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more