pub enum JsonRpcMessage<Req = Request, Resp = JsonObject, Noti = Notification> {
Request(JsonRpcRequest<Req>),
Response(JsonRpcResponse<Resp>),
Notification(JsonRpcNotification<Noti>),
Error(JsonRpcError),
}Expand description
Represents any JSON-RPC message that can be sent or received.
This enum covers all possible message types in the JSON-RPC protocol: individual requests/responses, notifications, and errors. It serves as the top-level message container for MCP communication.
Variants§
Request(JsonRpcRequest<Req>)
A single request expecting a response
Response(JsonRpcResponse<Resp>)
A response to a previous request
Notification(JsonRpcNotification<Noti>)
A one-way notification (no response expected)
Error(JsonRpcError)
An error response
Implementations§
Source§impl<Req, Resp, Noti> JsonRpcMessage<Req, Resp, Noti>where
Req: GetExtensions,
Noti: GetExtensions,
impl<Req, Resp, Noti> JsonRpcMessage<Req, Resp, Noti>where
Req: GetExtensions,
Noti: GetExtensions,
pub fn insert_extension<T: Clone + Send + Sync + 'static>(&mut self, value: T)
Source§impl<Req, Resp, Not> JsonRpcMessage<Req, Resp, Not>
impl<Req, Resp, Not> JsonRpcMessage<Req, Resp, Not>
pub const fn request(request: Req, id: RequestId) -> Self
pub const fn response(response: Resp, id: RequestId) -> Self
pub const fn error(error: ErrorData, id: RequestId) -> Self
pub const fn notification(notification: Not) -> Self
pub fn into_request(self) -> Option<(Req, RequestId)>
pub fn into_response(self) -> Option<(Resp, RequestId)>
pub fn into_notification(self) -> Option<Not>
pub fn into_error(self) -> Option<(ErrorData, RequestId)>
pub fn into_result(self) -> Option<(Result<Resp, ErrorData>, RequestId)>
Trait Implementations§
Source§impl<Req: Clone, Resp: Clone, Noti: Clone> Clone for JsonRpcMessage<Req, Resp, Noti>
impl<Req: Clone, Resp: Clone, Noti: Clone> Clone for JsonRpcMessage<Req, Resp, Noti>
Source§fn clone(&self) -> JsonRpcMessage<Req, Resp, Noti>
fn clone(&self) -> JsonRpcMessage<Req, Resp, Noti>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<'de, Req, Resp, Noti> Deserialize<'de> for JsonRpcMessage<Req, Resp, Noti>
impl<'de, Req, Resp, Noti> Deserialize<'de> for JsonRpcMessage<Req, Resp, Noti>
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl<Req, Resp, Noti> JsonSchema for JsonRpcMessage<Req, Resp, Noti>
impl<Req, Resp, Noti> JsonSchema for JsonRpcMessage<Req, Resp, Noti>
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Returns a string that uniquely identifies the schema produced by this type. Read more
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Generates a JSON Schema for this type. Read more
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
Whether JSON Schemas generated for this type should be included directly in parent schemas,
rather than being re-used where possible using the
$ref keyword. Read moreSource§impl<Req: PartialEq, Resp: PartialEq, Noti: PartialEq> PartialEq for JsonRpcMessage<Req, Resp, Noti>
impl<Req: PartialEq, Resp: PartialEq, Noti: PartialEq> PartialEq for JsonRpcMessage<Req, Resp, Noti>
Source§fn eq(&self, other: &JsonRpcMessage<Req, Resp, Noti>) -> bool
fn eq(&self, other: &JsonRpcMessage<Req, Resp, Noti>) -> bool
Tests for
self and other values to be equal, and is used by ==.Source§impl<Req, Resp, Noti> Serialize for JsonRpcMessage<Req, Resp, Noti>
impl<Req, Resp, Noti> Serialize for JsonRpcMessage<Req, Resp, Noti>
impl<Req, Resp, Noti> StructuralPartialEq for JsonRpcMessage<Req, Resp, Noti>
Auto Trait Implementations§
impl<Req, Resp, Noti> Freeze for JsonRpcMessage<Req, Resp, Noti>
impl<Req, Resp, Noti> RefUnwindSafe for JsonRpcMessage<Req, Resp, Noti>
impl<Req, Resp, Noti> Send for JsonRpcMessage<Req, Resp, Noti>
impl<Req, Resp, Noti> Sync for JsonRpcMessage<Req, Resp, Noti>
impl<Req, Resp, Noti> Unpin for JsonRpcMessage<Req, Resp, Noti>
impl<Req, Resp, Noti> UnwindSafe for JsonRpcMessage<Req, Resp, Noti>
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
Mutably borrows from an owned value. Read more