diff options
author | hozan23 <hozan23@proton.me> | 2023-11-30 22:52:53 +0300 |
---|---|---|
committer | hozan23 <hozan23@proton.me> | 2023-11-30 22:52:53 +0300 |
commit | 7d6c0e68a19ad5e2e4e05cfc219d446be6ff2286 (patch) | |
tree | 2f7bfc34ca033b059702fc26bc18170dc118c20e /jsonrpc/src/server.rs | |
parent | 8c70a0d379b21541b5b2d1d37ff7fc61ca311cd4 (diff) |
jsonrpc: Enhance the API and add support for TCP, Unix, and TLS protocols.
Diffstat (limited to 'jsonrpc/src/server.rs')
-rw-r--r-- | jsonrpc/src/server.rs | 23 |
1 files changed, 7 insertions, 16 deletions
diff --git a/jsonrpc/src/server.rs b/jsonrpc/src/server.rs index 05ef7da..0038e89 100644 --- a/jsonrpc/src/server.rs +++ b/jsonrpc/src/server.rs @@ -7,13 +7,14 @@ use karyons_core::{ async_util::{TaskGroup, TaskResult}, Executor, }; -use karyons_net::{listen, Conn, Endpoint, Listener}; + +use karyons_net::{Conn, Listener}; use crate::{ codec::{Codec, CodecConfig}, message, service::RPCService, - Error, Result, JSONRPC_VERSION, + Endpoint, Error, Result, JSONRPC_VERSION, }; /// RPC server config @@ -31,7 +32,7 @@ pub struct Server<'a> { } impl<'a> Server<'a> { - /// Creates a new RPC server. + /// Creates a new RPC server by passing a listener. It supports Tcp, Unix, and Tls. pub fn new(listener: Box<dyn Listener>, config: ServerConfig, ex: Executor<'a>) -> Arc<Self> { Arc::new(Self { listener, @@ -41,19 +42,9 @@ impl<'a> Server<'a> { }) } - /// Creates a new RPC server using the provided endpoint. - pub async fn new_with_endpoint( - endpoint: &Endpoint, - config: ServerConfig, - ex: Executor<'a>, - ) -> Result<Arc<Self>> { - let listener = listen(endpoint).await?; - Ok(Arc::new(Self { - listener, - services: RwLock::new(HashMap::new()), - task_group: TaskGroup::new(ex), - config, - })) + /// Returns the local endpoint. + pub fn local_endpoint(&self) -> Result<Endpoint> { + self.listener.local_endpoint().map_err(Error::KaryonsNet) } /// Starts the RPC server |