diff options
| author | hozan23 <hozan23@karyontech.net> | 2024-05-20 00:14:15 +0200 | 
|---|---|---|
| committer | hozan23 <hozan23@karyontech.net> | 2024-05-20 00:14:15 +0200 | 
| commit | 059eed6ffa3a0ade449dfc5f5a7a97699e24394e (patch) | |
| tree | d2139467f62574d845340eb80a6cd8161ceb261f /jsonrpc/src | |
| parent | 82564d3d8626d87a458888048a1e525efaad09bc (diff) | |
jsonrpc: add ws cargo features
Diffstat (limited to 'jsonrpc/src')
| -rw-r--r-- | jsonrpc/src/client.rs | 19 | ||||
| -rw-r--r-- | jsonrpc/src/codec.rs | 11 | ||||
| -rw-r--r-- | jsonrpc/src/server.rs | 10 | 
3 files changed, 26 insertions, 14 deletions
diff --git a/jsonrpc/src/client.rs b/jsonrpc/src/client.rs index 50d772b..b55943e 100644 --- a/jsonrpc/src/client.rs +++ b/jsonrpc/src/client.rs @@ -9,16 +9,15 @@ use futures_rustls::rustls;  use tokio_rustls::rustls;  use karyon_core::{async_util::timeout, util::random_32}; -use karyon_net::{ -    tls::ClientTlsConfig, -    ws::{ClientWsConfig, ClientWssConfig}, -    Conn, Endpoint, ToEndpoint, -}; +use karyon_net::{tls::ClientTlsConfig, Conn, Endpoint, ToEndpoint}; -use crate::{ -    codec::{JsonCodec, WsJsonCodec}, -    message, Error, Result, -}; +#[cfg(feature = "ws")] +use karyon_net::ws::{ClientWsConfig, ClientWssConfig}; + +#[cfg(feature = "ws")] +use crate::codec::WsJsonCodec; + +use crate::{codec::JsonCodec, message, Error, Result};  /// Represents an RPC client  pub struct Client { @@ -114,6 +113,7 @@ impl ClientBuilder {                      karyon_net::tcp::dial(&self.endpoint, Default::default(), JsonCodec {}).await?,                  ),              }, +            #[cfg(feature = "ws")]              Endpoint::Ws(..) | Endpoint::Wss(..) => match self.tls_config {                  Some((conf, dns_name)) => Box::new(                      karyon_net::ws::dial( @@ -134,6 +134,7 @@ impl ClientBuilder {                          .await?,                  ),              }, +            #[cfg(all(feature = "unix", target_family = "unix"))]              Endpoint::Unix(..) => Box::new(                  karyon_net::unix::dial(&self.endpoint, Default::default(), JsonCodec {}).await?,              ), diff --git a/jsonrpc/src/codec.rs b/jsonrpc/src/codec.rs index 74415c7..29c6f13 100644 --- a/jsonrpc/src/codec.rs +++ b/jsonrpc/src/codec.rs @@ -1,10 +1,14 @@ +#[cfg(feature = "ws")]  use async_tungstenite::tungstenite::Message;  use karyon_net::{ -    codec::{Codec, Decoder, Encoder, WebSocketCodec, WebSocketDecoder, WebSocketEncoder}, +    codec::{Codec, Decoder, Encoder},      Error, Result,  }; +#[cfg(feature = "ws")] +use karyon_net::codec::{WebSocketCodec, WebSocketDecoder, WebSocketEncoder}; +  #[derive(Clone)]  pub struct JsonCodec {} @@ -42,12 +46,16 @@ impl Decoder for JsonCodec {      }  } +#[cfg(feature = "ws")]  #[derive(Clone)]  pub struct WsJsonCodec {} + +#[cfg(feature = "ws")]  impl WebSocketCodec for WsJsonCodec {      type Item = serde_json::Value;  } +#[cfg(feature = "ws")]  impl WebSocketEncoder for WsJsonCodec {      type EnItem = serde_json::Value;      fn encode(&self, src: &Self::EnItem) -> Result<Message> { @@ -59,6 +67,7 @@ impl WebSocketEncoder for WsJsonCodec {      }  } +#[cfg(feature = "ws")]  impl WebSocketDecoder for WsJsonCodec {      type DeItem = serde_json::Value;      fn decode(&self, src: &Message) -> Result<Self::DeItem> { diff --git a/jsonrpc/src/server.rs b/jsonrpc/src/server.rs index 1cc7e1f..2155295 100644 --- a/jsonrpc/src/server.rs +++ b/jsonrpc/src/server.rs @@ -12,10 +12,10 @@ use karyon_core::async_util::{TaskGroup, TaskResult};  use karyon_net::{Conn, Endpoint, Listener, ToEndpoint}; -use crate::{ -    codec::{JsonCodec, WsJsonCodec}, -    message, Error, RPCService, Result, -}; +#[cfg(feature = "ws")] +use crate::codec::WsJsonCodec; + +use crate::{codec::JsonCodec, message, Error, RPCService, Result};  pub const INVALID_REQUEST_ERROR_MSG: &str = "Invalid request";  pub const FAILED_TO_PARSE_ERROR_MSG: &str = "Failed to parse"; @@ -230,6 +230,7 @@ impl ServerBuilder {                          .await?,                  ),              }, +            #[cfg(feature = "ws")]              Endpoint::Ws(..) | Endpoint::Wss(..) => match &self.tls_config {                  Some(conf) => Box::new(                      karyon_net::ws::listen( @@ -249,6 +250,7 @@ impl ServerBuilder {                          .await?,                  ),              }, +            #[cfg(all(feature = "unix", target_family = "unix"))]              Endpoint::Unix(..) => Box::new(karyon_net::unix::listen(                  &self.endpoint,                  Default::default(),  | 
