pub struct Channel {
pub rx: UnboundedReceiver<TransportFrame>,
pub tx: UnboundedSender<TransportFrame>,
}Expand description
A channel endpoint representing one side of a bidirectional JSON-RPC transport.
A channel carries complete TransportFrame values, preserving batch boundaries across in-process components and transport adapters. Malformed wire input is an explicit frame; failures while driving a physical transport are returned by that transport’s future.
§Example
let (channel_a, _channel_b) = Channel::duplex();
UntypedRole.builder()
.name("connection-a")
.connect_to(channel_a)
.await?;Fields§
§rx: UnboundedReceiver<TransportFrame>Receives frames from the counterpart.
tx: UnboundedSender<TransportFrame>Sends frames to the counterpart.
Implementations§
Source§impl Channel
impl Channel
Sourcepub fn duplex() -> (Self, Self)
pub fn duplex() -> (Self, Self)
Create a pair of connected channel endpoints.
Frames sent through either endpoint are received by the other endpoint.
Sourcepub async fn bridge_with_inspection(
left: Self,
right: Self,
left_to_right: impl FnMut(&RawJsonRpcMessage) -> Result<(), Error> + Send,
right_to_left: impl FnMut(&RawJsonRpcMessage) -> Result<(), Error> + Send,
) -> Result<(), Error>
pub async fn bridge_with_inspection( left: Self, right: Self, left_to_right: impl FnMut(&RawJsonRpcMessage) -> Result<(), Error> + Send, right_to_left: impl FnMut(&RawJsonRpcMessage) -> Result<(), Error> + Send, ) -> Result<(), Error>
Bridge two endpoints while inspecting every valid message.
Observers are invoked in source order, including for each valid member of a batch. The original frame is forwarded unchanged after inspection.
§Errors
Returns an observer error or an error if a destination closes before its source.