From 2d1a8aea0b9330cd2eaad26eb187644adad6bed9 Mon Sep 17 00:00:00 2001 From: hozan23 Date: Thu, 23 May 2024 00:19:58 +0200 Subject: jsonrpc: spawn task when handle new request --- jsonrpc/src/message.rs | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'jsonrpc/src/message.rs') diff --git a/jsonrpc/src/message.rs b/jsonrpc/src/message.rs index 9c89362..2cf28b1 100644 --- a/jsonrpc/src/message.rs +++ b/jsonrpc/src/message.rs @@ -1,5 +1,9 @@ use serde::{Deserialize, Serialize}; +use crate::SubscriptionID; + +pub type ID = u64; + pub const JSONRPC_VERSION: &str = "2.0"; /// Parse error: Invalid JSON was received by the server. @@ -32,24 +36,25 @@ pub struct Request { pub struct Response { pub jsonrpc: String, #[serde(skip_serializing_if = "Option::is_none")] + pub id: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub result: Option, #[serde(skip_serializing_if = "Option::is_none")] pub error: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub id: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub subscription: Option, } #[derive(Debug, Serialize, Deserialize)] pub struct Notification { pub jsonrpc: String, - #[serde(skip_serializing_if = "Option::is_none")] - pub method: Option, + pub method: String, #[serde(skip_serializing_if = "Option::is_none")] pub params: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub subscription: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct NotificationResult { + pub result: Option, + pub subscription: SubscriptionID, } #[derive(Debug, Serialize, Deserialize)] @@ -74,8 +79,8 @@ impl std::fmt::Display for Response { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { write!( f, - "{{jsonrpc: {}, result': {:?}, error: {:?} , id: {:?}, subscription: {:?}}}", - self.jsonrpc, self.result, self.error, self.id, self.subscription + "{{jsonrpc: {}, result': {:?}, error: {:?} , id: {:?}}}", + self.jsonrpc, self.result, self.error, self.id, ) } } @@ -94,8 +99,8 @@ impl std::fmt::Display for Notification { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { write!( f, - "{{jsonrpc: {}, method: {:?}, params: {:?}, subscription: {:?}}}", - self.jsonrpc, self.method, self.params, self.subscription + "{{jsonrpc: {}, method: {:?}, params: {:?}}}", + self.jsonrpc, self.method, self.params ) } } -- cgit v1.2.3