diff --git a/rpc/src/v1/impls/network.rs b/rpc/src/v1/impls/network.rs index a0a1834b..01e6b2ae 100644 --- a/rpc/src/v1/impls/network.rs +++ b/rpc/src/v1/impls/network.rs @@ -13,6 +13,7 @@ pub trait NetworkApi : Send + Sync + 'static { fn connect(&self, socket_addr: SocketAddr); fn node_info(&self, node_addr: IpAddr) -> Result; fn nodes_info(&self) -> Vec; + fn connection_count(&self) -> usize; } impl NetworkRpc for NetworkClient where T: NetworkApi { @@ -49,6 +50,10 @@ impl NetworkRpc for NetworkClient where T: NetworkApi { } ) } + + fn connection_count(&self) -> Result { + Ok(self.api.connection_count()) + } } pub struct NetworkClient { @@ -120,4 +125,8 @@ impl NetworkApi for NetworkClientCore { } }).collect() } + + fn connection_count(&self) -> usize { + self.p2p.connections().count() + } } diff --git a/rpc/src/v1/traits/network.rs b/rpc/src/v1/traits/network.rs index f3dbe6be..5fcc0004 100644 --- a/rpc/src/v1/traits/network.rs +++ b/rpc/src/v1/traits/network.rs @@ -16,5 +16,9 @@ build_rpc_trait! { /// @curl-example: curl --data-binary '{"jsonrpc": "2.0", "id":"1", "method": "getaddednodeinfo", "params": [true, "192.168.0.201"] }' -H 'content-type: application/json;' http://127.0.0.1:8332/ #[rpc(name = "getaddednodeinfo")] fn node_info(&self, bool, Trailing) -> Result, Error>; + /// Query node(s) info + /// @curl-example: curl --data-binary '{"jsonrpc": "2.0", "id":"1", "method": "getconnectioncount", "params": [] }' -H 'content-type: application/json;' http://127.0.0.1:8332/ + #[rpc(name = "getconnectioncount")] + fn connection_count(&self) -> Result; } }