pub enum ClientMessage {
Request(ClientJsonrpcRequest),
Notification(ClientJsonrpcNotification),
Response(ClientJsonrpcResponse),
Error(JsonrpcErrorResponse),
}Expand description
“Similar to JsonrpcMessage, but with the variants restricted to client-side messages.” ClientMessage represents a message sent by an MCP Client and received by an MCP Server.
Variants§
Request(ClientJsonrpcRequest)
Notification(ClientJsonrpcNotification)
Response(ClientJsonrpcResponse)
Error(JsonrpcErrorResponse)
Implementations§
Source§impl ClientMessage
impl ClientMessage
Sourcepub fn as_response(self) -> Result<ClientJsonrpcResponse, RpcError>
pub fn as_response(self) -> Result<ClientJsonrpcResponse, RpcError>
Converts the current message into a ClientJsonrpcResponse if it’s of the correct type.
This function checks if the current message is of type Response. If so, it returns the
ClientJsonrpcResponse wrapped in a Result::Ok. If the message is not a Response,
it returns an error with a descriptive message indicating the mismatch in expected message types.
§Returns
Ok(ClientJsonrpcResponse)if the message is a validResponse.Err(RpcError)if the message type is invalid
Sourcepub fn as_request(self) -> Result<ClientJsonrpcRequest, RpcError>
pub fn as_request(self) -> Result<ClientJsonrpcRequest, RpcError>
Converts the current message into a ClientJsonrpcRequest if it’s of the correct type.
This function checks if the current message is of type Request. If so, it returns the
ClientJsonrpcRequest wrapped in a Result::Ok. If the message is not a Request,
it returns an error with a descriptive message indicating the mismatch in expected message types.
§Returns
Ok(ClientJsonrpcRequest)if the message is a validRequest.Err(RpcError)if the message type is invalid
Sourcepub fn as_notification(self) -> Result<ClientJsonrpcNotification, RpcError>
pub fn as_notification(self) -> Result<ClientJsonrpcNotification, RpcError>
Converts the current message into a ClientJsonrpcNotification if it’s of the correct type.
This function checks if the current message is of type Notification. If so, it returns the
ClientJsonrpcNotification wrapped in a Result::Ok. If the message is not a Notification,
it returns an error with a descriptive message indicating the mismatch in expected message types.
§Returns
Ok(ClientJsonrpcNotification)if the message is a validNotification.Err(RpcError)if the message type is invalid
Sourcepub fn as_error(self) -> Result<JsonrpcErrorResponse, RpcError>
pub fn as_error(self) -> Result<JsonrpcErrorResponse, RpcError>
Converts the current message into a JsonrpcErrorResponse if it’s of the correct type.
This function checks if the current message is of type Error. If so, it returns the
JsonrpcErrorResponse wrapped in a Result::Ok. If the message is not a Error,
it returns an error with a descriptive message indicating the mismatch in expected message types.
§Returns
Ok(JsonrpcErrorResponse)if the message is a validError.Err(RpcError)if the message type is invalid
Sourcepub fn is_initialize_request(&self) -> bool
pub fn is_initialize_request(&self) -> bool
Returns true if message is an InitializeRequest.
Sourcepub fn is_initialized_notification(&self) -> bool
pub fn is_initialized_notification(&self) -> bool
Returns true if the message is an InitializedNotification
Trait Implementations§
Source§impl Clone for ClientMessage
impl Clone for ClientMessage
Source§fn clone(&self) -> ClientMessage
fn clone(&self) -> ClientMessage
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ClientMessage
impl Debug for ClientMessage
Source§impl<'de> Deserialize<'de> for ClientMessage
impl<'de> Deserialize<'de> for ClientMessage
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<ClientMessage, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<ClientMessage, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Display for ClientMessage
impl Display for ClientMessage
Source§impl From<ClientJsonrpcNotification> for ClientMessage
impl From<ClientJsonrpcNotification> for ClientMessage
Source§fn from(value: ClientJsonrpcNotification) -> ClientMessage
fn from(value: ClientJsonrpcNotification) -> ClientMessage
Source§impl From<ClientJsonrpcRequest> for ClientMessage
impl From<ClientJsonrpcRequest> for ClientMessage
Source§fn from(value: ClientJsonrpcRequest) -> ClientMessage
fn from(value: ClientJsonrpcRequest) -> ClientMessage
Source§impl From<ClientJsonrpcResponse> for ClientMessage
impl From<ClientJsonrpcResponse> for ClientMessage
Source§fn from(value: ClientJsonrpcResponse) -> ClientMessage
fn from(value: ClientJsonrpcResponse) -> ClientMessage
Source§impl From<ClientMessage> for ClientMessages
impl From<ClientMessage> for ClientMessages
Source§fn from(value: ClientMessage) -> ClientMessages
fn from(value: ClientMessage) -> ClientMessages
Source§impl FromMessage<MessageFromClient> for ClientMessage
impl FromMessage<MessageFromClient> for ClientMessage
fn from_message( message: MessageFromClient, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl FromStr for ClientMessage
impl FromStr for ClientMessage
Source§impl McpDispatch<ClientMessages, ServerMessages, ClientMessage, ServerMessage> for MessageDispatcher<ClientMessage>
impl McpDispatch<ClientMessages, ServerMessages, ClientMessage, ServerMessage> for MessageDispatcher<ClientMessage>
Source§fn send_message<'life0, 'async_trait>(
&'life0 self,
messages: ServerMessages,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<ClientMessages>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
MessageDispatcher<ClientMessage>: 'async_trait,
fn send_message<'life0, 'async_trait>(
&'life0 self,
messages: ServerMessages,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<ClientMessages>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
MessageDispatcher<ClientMessage>: 'async_trait,
Sends a message from the server to the client and awaits a response if applicable.
Serializes the ServerMessages to JSON, writes it to the transport, and waits for a
ClientMessages response if the message is a request. Notifications and responses return
Ok(None).
§Arguments
messages- The client message to send, coulld be a single message or batch.
§Returns
A TransportResult containing Some(ClientMessages) for requests with a response,
or None for notifications/responses, or an error if the operation fails.
§Errors
Returns a TransportError if serialization, writing, or timeout occurs.
Source§fn write_str<'life0, 'life1, 'async_trait>(
&'life0 self,
payload: &'life1 str,
skip_store: bool,
) -> Pin<Box<dyn Future<Output = Result<(), TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
MessageDispatcher<ClientMessage>: 'async_trait,
fn write_str<'life0, 'life1, 'async_trait>(
&'life0 self,
payload: &'life1 str,
skip_store: bool,
) -> Pin<Box<dyn Future<Output = Result<(), TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
MessageDispatcher<ClientMessage>: 'async_trait,
Writes a string payload to the underlying asynchronous writable stream, appending a newline character and flushing the stream afterward.
fn send<'life0, 'async_trait>(
&'life0 self,
message: ServerMessage,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<ClientMessage>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
MessageDispatcher<ClientMessage>: 'async_trait,
fn send_batch<'life0, 'async_trait>(
&'life0 self,
message: Vec<ServerMessage>,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<ClientMessage>>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
MessageDispatcher<ClientMessage>: 'async_trait,
Source§impl McpDispatch<ClientMessages, ServerMessages, ClientMessage, ServerMessage> for SseTransport<ClientMessage>
impl McpDispatch<ClientMessages, ServerMessages, ClientMessage, ServerMessage> for SseTransport<ClientMessage>
Source§fn send_message<'life0, 'async_trait>(
&'life0 self,
message: ServerMessages,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<ClientMessages>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
SseTransport<ClientMessage>: 'async_trait,
fn send_message<'life0, 'async_trait>(
&'life0 self,
message: ServerMessages,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<ClientMessages>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
SseTransport<ClientMessage>: 'async_trait,
S and optionally includes a request_id.
The request_id is used when sending a message in response to an MCP request.
It should match the request_id of the original request.fn send<'life0, 'async_trait>(
&'life0 self,
message: ServerMessage,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<ClientMessage>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
SseTransport<ClientMessage>: 'async_trait,
fn send_batch<'life0, 'async_trait>(
&'life0 self,
message: Vec<ServerMessage>,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<ClientMessage>>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
SseTransport<ClientMessage>: 'async_trait,
Source§fn write_str<'life0, 'life1, 'async_trait>(
&'life0 self,
payload: &'life1 str,
skip_store: bool,
) -> Pin<Box<dyn Future<Output = Result<(), TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SseTransport<ClientMessage>: 'async_trait,
fn write_str<'life0, 'life1, 'async_trait>(
&'life0 self,
payload: &'life1 str,
skip_store: bool,
) -> Pin<Box<dyn Future<Output = Result<(), TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SseTransport<ClientMessage>: 'async_trait,
Source§impl McpDispatch<ClientMessages, ServerMessages, ClientMessage, ServerMessage> for StdioTransport<ClientMessage>
impl McpDispatch<ClientMessages, ServerMessages, ClientMessage, ServerMessage> for StdioTransport<ClientMessage>
Source§fn send_message<'life0, 'async_trait>(
&'life0 self,
message: ServerMessages,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<ClientMessages>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
StdioTransport<ClientMessage>: 'async_trait,
fn send_message<'life0, 'async_trait>(
&'life0 self,
message: ServerMessages,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<ClientMessages>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
StdioTransport<ClientMessage>: 'async_trait,
S and optionally includes a request_id.
The request_id is used when sending a message in response to an MCP request.
It should match the request_id of the original request.fn send<'life0, 'async_trait>(
&'life0 self,
message: ServerMessage,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<ClientMessage>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
StdioTransport<ClientMessage>: 'async_trait,
fn send_batch<'life0, 'async_trait>(
&'life0 self,
message: Vec<ServerMessage>,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<ClientMessage>>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
StdioTransport<ClientMessage>: 'async_trait,
Source§fn write_str<'life0, 'life1, 'async_trait>(
&'life0 self,
payload: &'life1 str,
skip_store: bool,
) -> Pin<Box<dyn Future<Output = Result<(), TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
StdioTransport<ClientMessage>: 'async_trait,
fn write_str<'life0, 'life1, 'async_trait>(
&'life0 self,
payload: &'life1 str,
skip_store: bool,
) -> Pin<Box<dyn Future<Output = Result<(), TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
StdioTransport<ClientMessage>: 'async_trait,
Source§impl McpDispatch<ServerMessages, ClientMessages, ServerMessage, ClientMessage> for ClientSseTransport<ServerMessage>
impl McpDispatch<ServerMessages, ClientMessages, ServerMessage, ClientMessage> for ClientSseTransport<ServerMessage>
Source§fn send_message<'life0, 'async_trait>(
&'life0 self,
message: ClientMessages,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<ServerMessages>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
ClientSseTransport<ServerMessage>: 'async_trait,
fn send_message<'life0, 'async_trait>(
&'life0 self,
message: ClientMessages,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<ServerMessages>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
ClientSseTransport<ServerMessage>: 'async_trait,
S and optionally includes a request_id.
The request_id is used when sending a message in response to an MCP request.
It should match the request_id of the original request.fn send<'life0, 'async_trait>(
&'life0 self,
message: ClientMessage,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<ServerMessage>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
ClientSseTransport<ServerMessage>: 'async_trait,
fn send_batch<'life0, 'async_trait>(
&'life0 self,
message: Vec<ClientMessage>,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<ServerMessage>>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
ClientSseTransport<ServerMessage>: 'async_trait,
Source§fn write_str<'life0, 'life1, 'async_trait>(
&'life0 self,
payload: &'life1 str,
skip_store: bool,
) -> Pin<Box<dyn Future<Output = Result<(), TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
ClientSseTransport<ServerMessage>: 'async_trait,
fn write_str<'life0, 'life1, 'async_trait>(
&'life0 self,
payload: &'life1 str,
skip_store: bool,
) -> Pin<Box<dyn Future<Output = Result<(), TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
ClientSseTransport<ServerMessage>: 'async_trait,
Source§impl McpDispatch<ServerMessages, ClientMessages, ServerMessage, ClientMessage> for ClientStreamableTransport<ServerMessage>
impl McpDispatch<ServerMessages, ClientMessages, ServerMessage, ClientMessage> for ClientStreamableTransport<ServerMessage>
Source§fn send_message<'life0, 'async_trait>(
&'life0 self,
message: ClientMessages,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<ServerMessages>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
ClientStreamableTransport<ServerMessage>: 'async_trait,
fn send_message<'life0, 'async_trait>(
&'life0 self,
message: ClientMessages,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<ServerMessages>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
ClientStreamableTransport<ServerMessage>: 'async_trait,
S and optionally includes a request_id.
The request_id is used when sending a message in response to an MCP request.
It should match the request_id of the original request.fn send<'life0, 'async_trait>(
&'life0 self,
message: ClientMessage,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<ServerMessage>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
ClientStreamableTransport<ServerMessage>: 'async_trait,
fn send_batch<'life0, 'async_trait>(
&'life0 self,
message: Vec<ClientMessage>,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<ServerMessage>>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
ClientStreamableTransport<ServerMessage>: 'async_trait,
Source§fn write_str<'life0, 'life1, 'async_trait>(
&'life0 self,
payload: &'life1 str,
skip_store: bool,
) -> Pin<Box<dyn Future<Output = Result<(), TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
ClientStreamableTransport<ServerMessage>: 'async_trait,
fn write_str<'life0, 'life1, 'async_trait>(
&'life0 self,
payload: &'life1 str,
skip_store: bool,
) -> Pin<Box<dyn Future<Output = Result<(), TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
ClientStreamableTransport<ServerMessage>: 'async_trait,
Source§impl McpDispatch<ServerMessages, ClientMessages, ServerMessage, ClientMessage> for MessageDispatcher<ServerMessage>
impl McpDispatch<ServerMessages, ClientMessages, ServerMessage, ClientMessage> for MessageDispatcher<ServerMessage>
Source§fn send_message<'life0, 'async_trait>(
&'life0 self,
messages: ClientMessages,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<ServerMessages>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
MessageDispatcher<ServerMessage>: 'async_trait,
fn send_message<'life0, 'async_trait>(
&'life0 self,
messages: ClientMessages,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<ServerMessages>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
MessageDispatcher<ServerMessage>: 'async_trait,
Sends a message from the client to the server and awaits a response if applicable.
Serializes the ClientMessages to JSON, writes it to the transport, and waits for a
ServerMessages response if the message is a request. Notifications and responses return
Ok(None).
§Arguments
messages- The client message to send, coulld be a single message or batch.
§Returns
A TransportResult containing Some(ServerMessages) for requests with a response,
or None for notifications/responses, or an error if the operation fails.
§Errors
Returns a TransportError if serialization, writing, or timeout occurs.
Source§fn write_str<'life0, 'life1, 'async_trait>(
&'life0 self,
payload: &'life1 str,
_skip_store: bool,
) -> Pin<Box<dyn Future<Output = Result<(), TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
MessageDispatcher<ServerMessage>: 'async_trait,
fn write_str<'life0, 'life1, 'async_trait>(
&'life0 self,
payload: &'life1 str,
_skip_store: bool,
) -> Pin<Box<dyn Future<Output = Result<(), TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
MessageDispatcher<ServerMessage>: 'async_trait,
Writes a string payload to the underlying asynchronous writable stream, appending a newline character and flushing the stream afterward.
fn send<'life0, 'async_trait>(
&'life0 self,
message: ClientMessage,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<ServerMessage>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
MessageDispatcher<ServerMessage>: 'async_trait,
fn send_batch<'life0, 'async_trait>(
&'life0 self,
message: Vec<ClientMessage>,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<ServerMessage>>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
MessageDispatcher<ServerMessage>: 'async_trait,
Source§impl McpDispatch<ServerMessages, ClientMessages, ServerMessage, ClientMessage> for StdioTransport<ServerMessage>
impl McpDispatch<ServerMessages, ClientMessages, ServerMessage, ClientMessage> for StdioTransport<ServerMessage>
Source§fn send_message<'life0, 'async_trait>(
&'life0 self,
message: ClientMessages,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<ServerMessages>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
StdioTransport<ServerMessage>: 'async_trait,
fn send_message<'life0, 'async_trait>(
&'life0 self,
message: ClientMessages,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<ServerMessages>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
StdioTransport<ServerMessage>: 'async_trait,
S and optionally includes a request_id.
The request_id is used when sending a message in response to an MCP request.
It should match the request_id of the original request.fn send<'life0, 'async_trait>(
&'life0 self,
message: ClientMessage,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<ServerMessage>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
StdioTransport<ServerMessage>: 'async_trait,
fn send_batch<'life0, 'async_trait>(
&'life0 self,
message: Vec<ClientMessage>,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<ServerMessage>>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
StdioTransport<ServerMessage>: 'async_trait,
Source§fn write_str<'life0, 'life1, 'async_trait>(
&'life0 self,
payload: &'life1 str,
skip_store: bool,
) -> Pin<Box<dyn Future<Output = Result<(), TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
StdioTransport<ServerMessage>: 'async_trait,
fn write_str<'life0, 'life1, 'async_trait>(
&'life0 self,
payload: &'life1 str,
skip_store: bool,
) -> Pin<Box<dyn Future<Output = Result<(), TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
StdioTransport<ServerMessage>: 'async_trait,
Source§impl McpMessage for ClientMessage
impl McpMessage for ClientMessage
Source§fn message_type(&self) -> MessageTypes
fn message_type(&self) -> MessageTypes
Determines the type of the message and returns the corresponding MessageTypes variant.
fn is_response(&self) -> bool
fn is_request(&self) -> bool
fn is_notification(&self) -> bool
fn is_error(&self) -> bool
Source§impl RpcMessage for ClientMessage
impl RpcMessage for ClientMessage
Source§impl Serialize for ClientMessage
impl Serialize for ClientMessage
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Source§impl Transport<ClientMessages, MessageFromServer, ClientMessage, ServerMessages, ServerMessage> for SseTransport<ClientMessage>
impl Transport<ClientMessages, MessageFromServer, ClientMessage, ServerMessages, ServerMessage> for SseTransport<ClientMessage>
Source§fn start<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<ReceiverStream<ClientMessages>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
MessageDispatcher<ClientMessage>: McpDispatch<ClientMessages, ServerMessages, ClientMessage, ServerMessage>,
SseTransport<ClientMessage>: 'async_trait,
fn start<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<ReceiverStream<ClientMessages>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
MessageDispatcher<ClientMessage>: McpDispatch<ClientMessages, ServerMessages, ClientMessage, ServerMessage>,
SseTransport<ClientMessage>: 'async_trait,
Starts the transport, initializing streams and message dispatcher
Sets up the MCP stream and dispatcher using the provided duplex streams.
§Returns
TransportResult<(Pin<Box<dyn Stream<Item = R> + Send>>, MessageDispatcher<R>, IoStream)>- The message stream, dispatcher, and error stream
§Errors
- Returns
TransportErrorif streams are already taken or not initialized
Source§fn is_shut_down<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = bool> + Send + 'async_trait>>where
'life0: 'async_trait,
SseTransport<ClientMessage>: 'async_trait,
fn is_shut_down<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = bool> + Send + 'async_trait>>where
'life0: 'async_trait,
SseTransport<ClientMessage>: 'async_trait,
Checks if the transport has been shut down
§Returns
bool- True if the transport is shut down, false otherwise
Source§fn shut_down<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<(), TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
SseTransport<ClientMessage>: 'async_trait,
fn shut_down<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<(), TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
SseTransport<ClientMessage>: 'async_trait,
Shuts down the transport, terminating tasks and signaling closure
Cancels any running tasks and clears the cancellation source.
§Returns
TransportResult<()>- Ok if shutdown is successful, Err if cancellation fails
fn message_sender( &self, ) -> Arc<RwLock<Option<MessageDispatcher<ClientMessage>>>>
fn error_stream(&self) -> &RwLock<Option<IoStream>>
fn consume_string_payload<'life0, 'life1, 'async_trait>(
&'life0 self,
payload: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<(), TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SseTransport<ClientMessage>: 'async_trait,
fn keep_alive<'life0, 'async_trait>(
&'life0 self,
interval: Duration,
disconnect_tx: Sender<()>,
) -> Pin<Box<dyn Future<Output = Result<JoinHandle<()>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
SseTransport<ClientMessage>: 'async_trait,
fn pending_request_tx<'life0, 'life1, 'async_trait>(
&'life0 self,
request_id: &'life1 RequestId,
) -> Pin<Box<dyn Future<Output = Option<Sender<ClientMessage>>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SseTransport<ClientMessage>: 'async_trait,
fn session_id<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Option<String>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
impl TransportDispatcher<ClientMessages, MessageFromServer, ClientMessage, ServerMessages, ServerMessage> for SseTransport<ClientMessage>
impl TransportDispatcher<ClientMessages, MessageFromServer, ClientMessage, ServerMessages, ServerMessage> for StdioTransport<ClientMessage>
impl TransportDispatcher<ServerMessages, MessageFromClient, ServerMessage, ClientMessages, ClientMessage> for ClientSseTransport<ServerMessage>
impl TransportDispatcher<ServerMessages, MessageFromClient, ServerMessage, ClientMessages, ClientMessage> for ClientStreamableTransport<ServerMessage>
impl TransportDispatcher<ServerMessages, MessageFromClient, ServerMessage, ClientMessages, ClientMessage> for StdioTransport<ServerMessage>
Auto Trait Implementations§
impl Freeze for ClientMessage
impl RefUnwindSafe for ClientMessage
impl Send for ClientMessage
impl Sync for ClientMessage
impl Unpin for ClientMessage
impl UnsafeUnpin for ClientMessage
impl UnwindSafe for ClientMessage
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> 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> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.