Skip to main content

JsonRpcRequest

Struct JsonRpcRequest 

Source
pub struct JsonRpcRequest {
    pub jsonrpc: Cow<'static, str>,
    pub method: String,
    pub params: Option<Value>,
    pub id: Option<RequestId>,
}
Expand description

JSON-RPC 2.0 request.

Fields§

§jsonrpc: Cow<'static, str>

Protocol version (always “2.0”).

§method: String

Method name.

§params: Option<Value>

Request parameters.

§id: Option<RequestId>

Request ID (absent for notifications).

An explicit JSON null is rejected instead of being conflated with an absent member. Notifications omit id entirely.

Implementations§

Source§

impl JsonRpcRequest

Source

pub fn decode_strict_with_raw_params( bytes: &[u8], document_byte_limit: usize, ) -> Result<(Self, Option<String>), JsonRpcAdmissionError>

Strictly decodes one request while retaining an exact parameter-source sidecar for method-specific ingress decoding.

The returned String, when present, is the exact JSON source of the request’s params member. It is deliberately separate from JsonRpcRequest so existing public struct literals and ordinary typed request APIs retain their established shape. A consumer may only attach this source to the returned request after comparing its materialized params value; final core dispatch performs that equality check before it uses the raw source.

This applies the same bounded raw-document admission as decode_strict_jsonrpc_message, including duplicate-member rejection, before producing either the typed request or its sidecar.

Source§

impl JsonRpcRequest

Source

pub fn new( method: impl Into<String>, params: Option<Value>, id: impl Into<RequestId>, ) -> Self

Creates a new request with the given method and parameters.

Source

pub fn notification(method: impl Into<String>, params: Option<Value>) -> Self

Creates a notification (request without ID).

Source

pub fn initialized_notification() -> Self

Creates the MCP lifecycle notifications/initialized notification.

Uses the spec-correct method name (notifications/initialized), avoiding the bare initialized spelling that compliant servers do not route as the lifecycle ack.

Source

pub fn is_notification(&self) -> bool

Returns true if this is a notification (no ID).

Source

pub fn validate(&self) -> Result<(), &'static str>

Verifies invariants that can otherwise be bypassed by constructing or mutating this public protocol type directly.

§Errors

Returns an error for a non-standard protocol version or invalid ID.

Trait Implementations§

Source§

impl Clone for JsonRpcRequest

Source§

fn clone(&self) -> JsonRpcRequest

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for JsonRpcRequest

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for JsonRpcRequest

Source§

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 Serialize for JsonRpcRequest

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, _span: NoopSpan) -> Self

Instruments this future with a span (no-op when disabled).
Source§

fn in_current_span(self) -> Self

Instruments this future with the current span (no-op when disabled).
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V