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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> GetSetFdFlags for T
impl<T> GetSetFdFlags for T
Source§fn get_fd_flags(&self) -> Result<FdFlags, Error>where
T: AsFilelike,
fn get_fd_flags(&self) -> Result<FdFlags, Error>where
T: AsFilelike,
Query the “status” flags for the
self file descriptor.Source§fn new_set_fd_flags(&self, fd_flags: FdFlags) -> Result<SetFdFlags<T>, Error>where
T: AsFilelike,
fn new_set_fd_flags(&self, fd_flags: FdFlags) -> Result<SetFdFlags<T>, Error>where
T: AsFilelike,
Source§fn set_fd_flags(&mut self, set_fd_flags: SetFdFlags<T>) -> Result<(), Error>where
T: AsFilelike,
fn set_fd_flags(&mut self, set_fd_flags: SetFdFlags<T>) -> Result<(), Error>where
T: AsFilelike,
Set the “status” flags for the
self file descriptor. Read moreSource§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> 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