aboutsummaryrefslogtreecommitdiff
path: root/jsonrpc/src
diff options
context:
space:
mode:
authorhozan23 <hozan23@karyontech.net>2024-05-28 15:14:34 +0200
committerhozan23 <hozan23@karyontech.net>2024-05-28 15:14:34 +0200
commit34f528a3b4063b4a25915e60d7f22ee1fb2d1bd9 (patch)
tree0327af027e72f7baf5f484c79b189aae631773d0 /jsonrpc/src
parent9341e695d0e387927804716b60945912cba686dd (diff)
jsonrpc: add comments & remove debugging code
Diffstat (limited to 'jsonrpc/src')
-rw-r--r--jsonrpc/src/client/builder.rs3
-rw-r--r--jsonrpc/src/client/mod.rs10
-rw-r--r--jsonrpc/src/message.rs28
3 files changed, 31 insertions, 10 deletions
diff --git a/jsonrpc/src/client/builder.rs b/jsonrpc/src/client/builder.rs
index 4bfb5c3..a287070 100644
--- a/jsonrpc/src/client/builder.rs
+++ b/jsonrpc/src/client/builder.rs
@@ -50,7 +50,8 @@ pub struct ClientBuilder {
}
impl ClientBuilder {
- /// Set timeout for sending and receiving messages, in milliseconds.
+ /// Set timeout for receiving messages, in milliseconds. Requests will
+ /// fail if it takes longer.
///
/// # Examples
///
diff --git a/jsonrpc/src/client/mod.rs b/jsonrpc/src/client/mod.rs
index 05479f9..326252a 100644
--- a/jsonrpc/src/client/mod.rs
+++ b/jsonrpc/src/client/mod.rs
@@ -98,15 +98,7 @@ impl Client {
let req_json = serde_json::to_value(&request)?;
- match self.timeout {
- Some(ms) => {
- let t = Duration::from_millis(ms);
- timeout(t, self.conn.send(req_json)).await??;
- }
- None => {
- self.conn.send(req_json).await?;
- }
- }
+ self.conn.send(req_json).await?;
let (tx, rx) = async_channel::bounded(CHANNEL_CAP);
self.chans.lock().await.insert(id, tx);
diff --git a/jsonrpc/src/message.rs b/jsonrpc/src/message.rs
index 1f296cd..36ece38 100644
--- a/jsonrpc/src/message.rs
+++ b/jsonrpc/src/message.rs
@@ -19,47 +19,75 @@ pub const INVALID_PARAMS_ERROR_CODE: i32 = -32602;
/// Internal error: Internal JSON-RPC error.
pub const INTERNAL_ERROR_CODE: i32 = -32603;
+/// SubscriptionID is used to identify a subscription.
pub type SubscriptionID = u32;
+/// Request represents a JSON-RPC request message.
+/// It includes the JSON-RPC version, an identifier for the request, the method
+/// to be invoked, and optional parameters.
#[derive(Debug, Serialize, Deserialize)]
pub struct Request {
+ /// JSON-RPC version, typically "2.0".
pub jsonrpc: String,
+ /// Unique identifier for the request, can be a number or a string.
pub id: serde_json::Value,
+ /// The name of the method to be invoked.
pub method: String,
+ /// Optional parameters for the method.
#[serde(skip_serializing_if = "Option::is_none")]
pub params: Option<serde_json::Value>,
}
+/// Response represents a JSON-RPC response message.
+/// It includes the JSON-RPC version, an identifier matching the request, the result of the request,
+/// and an optional error.
#[derive(Debug, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct Response {
+ /// JSON-RPC version, typically "2.0".
pub jsonrpc: String,
+ /// Unique identifier for the request, can be a number or a string.
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<serde_json::Value>,
+ /// Result of the request if it was successful.
#[serde(skip_serializing_if = "Option::is_none")]
pub result: Option<serde_json::Value>,
+ /// Error object if the request failed.
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<Error>,
}
+/// Notification represents a JSON-RPC notification message.
#[derive(Debug, Serialize, Deserialize)]
pub struct Notification {
+ /// JSON-RPC version, typically "2.0".
pub jsonrpc: String,
+ /// The name of the method to be invoked.
pub method: String,
+ /// Optional parameters for the method.
#[serde(skip_serializing_if = "Option::is_none")]
pub params: Option<serde_json::Value>,
}
+/// NotificationResult represents the result of a subscription notification.
+/// It includes the result and the subscription ID that triggered the notification.
#[derive(Debug, Serialize, Deserialize)]
pub struct NotificationResult {
+ /// Optional data about the notification.
pub result: Option<serde_json::Value>,
+ /// ID of the subscription that triggered the notification.
pub subscription: SubscriptionID,
}
+// Error represents an error in a JSON-RPC response.
+// It includes an error code, a message, and optional additional data.
#[derive(Debug, Serialize, Deserialize)]
pub struct Error {
+ /// Error code indicating the type of error.
pub code: i32,
+ /// Human-readable error message.
pub message: String,
+ /// Optional additional data about the error.
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<serde_json::Value>,
}