diff --git a/src/api/helper.rs b/src/api/helper.rs index 11420da..5d99748 100644 --- a/src/api/helper.rs +++ b/src/api/helper.rs @@ -1,5 +1,5 @@ use crate::feed::Message; -use crate::rpc::{BodyType, RequestNo, RpcStream, RpcType}; +use crate::rpc::{Body,BodyType, RequestNo, RpcStream, RpcType}; use async_std::io::{Read, Write}; use serde_json; @@ -245,6 +245,10 @@ impl ApiMethod { _ => None, } } + pub fn from_rpc_body(body : &Body) -> Option { + let selector = body.name.iter().map(|v| v.as_str()).collect::>(); + Self::from_selector(&selector) + } } pub struct ApiHelper { diff --git a/src/feed/message.rs b/src/feed/message.rs index d7e7bac..d23109f 100644 --- a/src/feed/message.rs +++ b/src/feed/message.rs @@ -52,7 +52,7 @@ impl AsRef<[u8]> for MessageId { } } -#[derive(Debug, Deserialize)] +#[derive(Debug, Deserialize, Clone)] pub struct Message { pub value: serde_json::Value, } diff --git a/src/rpc/stream.rs b/src/rpc/stream.rs index 7e5015f..b448f6d 100644 --- a/src/rpc/stream.rs +++ b/src/rpc/stream.rs @@ -21,7 +21,7 @@ pub enum BodyType { JSON, } -#[derive(Deserialize)] +#[derive(Debug,Deserialize)] pub struct Body { pub name: Vec, #[serde(rename = "type")] @@ -127,6 +127,7 @@ pub struct RpcStream { req_no: RequestNo, } +#[derive(Debug)] pub enum RecvMsg { RpcRequest(Body), RpcResponse(BodyType, Vec),