diff options
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 |