pub trait Transport {
// Required methods
fn send(
&mut self,
cx: &Cx,
message: &JsonRpcMessage,
) -> Result<(), TransportError>;
fn recv(&mut self, cx: &Cx) -> Result<JsonRpcMessage, TransportError>;
fn close(&mut self) -> Result<(), TransportError>;
// Provided methods
fn send_request(
&mut self,
cx: &Cx,
request: &JsonRpcRequest,
) -> Result<(), TransportError> { ... }
fn send_response(
&mut self,
cx: &Cx,
response: &JsonRpcResponse,
) -> Result<(), TransportError> { ... }
}Expand description
Transport trait for cancel-correct message passing.
All transports must integrate with asupersync’s capability context (Cx)
for cancellation checking and budget enforcement.
§Cancel-Safety
Implementations should:
- Call
cx.checkpoint()before blocking operations - Use two-phase patterns (reserve/commit) where applicable
- Respect budget constraints from the context
§Example
ⓘ
impl Transport for MyTransport {
fn send(&mut self, cx: &Cx, msg: &JsonRpcMessage) -> Result<(), TransportError> {
cx.checkpoint()?; // Check for cancellation
let bytes = self.codec.encode(msg)?;
self.write_all(&bytes)?;
Ok(())
}
}Required Methods§
Sourcefn send(
&mut self,
cx: &Cx,
message: &JsonRpcMessage,
) -> Result<(), TransportError>
fn send( &mut self, cx: &Cx, message: &JsonRpcMessage, ) -> Result<(), TransportError>
Sourcefn recv(&mut self, cx: &Cx) -> Result<JsonRpcMessage, TransportError>
fn recv(&mut self, cx: &Cx) -> Result<JsonRpcMessage, TransportError>
Sourcefn close(&mut self) -> Result<(), TransportError>
fn close(&mut self) -> Result<(), TransportError>
Close the transport gracefully.
This flushes any pending data and releases resources.
Provided Methods§
Sourcefn send_request(
&mut self,
cx: &Cx,
request: &JsonRpcRequest,
) -> Result<(), TransportError>
fn send_request( &mut self, cx: &Cx, request: &JsonRpcRequest, ) -> Result<(), TransportError>
Send a request through this transport.
Convenience method that wraps a request in a message.
Sourcefn send_response(
&mut self,
cx: &Cx,
response: &JsonRpcResponse,
) -> Result<(), TransportError>
fn send_response( &mut self, cx: &Cx, response: &JsonRpcResponse, ) -> Result<(), TransportError>
Send a response through this transport.
Convenience method that wraps a response in a message.