RPC Admin namespace implementation (#685)

* AdminApi first draft

* Implement add_trusted_peer and remove_trusted_peer

* Fix tests

* Refactoring NetworkHandle peer related methods

* Refactoring add_discovered_node in PeersManager

* Change record type from String to NodeRecord

* Adding NetworkHandleMessage::RemovePeer command
This commit is contained in:
Aurélien
2023-01-03 14:02:05 +01:00
committed by GitHub
parent debf21d34e
commit 65bc3cb7b8
11 changed files with 141 additions and 38 deletions

View File

@@ -0,0 +1,38 @@
use jsonrpsee::core::RpcResult;
use reth_network::{peers::PeerKind, NetworkHandle};
use reth_primitives::NodeRecord;
use reth_rpc_api::AdminApiServer;
struct AdminApi {
/// An interface to interact with the network
network: NetworkHandle,
}
impl AdminApiServer for AdminApi {
fn add_peer(&self, record: NodeRecord) -> RpcResult<bool> {
self.network.add_peer(record.id, record.tcp_addr());
Ok(true)
}
fn remove_peer(&self, record: NodeRecord) -> RpcResult<bool> {
self.network.remove_peer(record.id, PeerKind::Basic);
Ok(true)
}
fn add_trusted_peer(&self, record: NodeRecord) -> RpcResult<bool> {
self.network.add_trusted_peer(record.id, record.tcp_addr());
Ok(true)
}
fn remove_trusted_peer(&self, record: NodeRecord) -> RpcResult<bool> {
self.network.remove_peer(record.id, PeerKind::Trusted);
Ok(true)
}
fn subscribe(
&self,
_subscription_sink: jsonrpsee::SubscriptionSink,
) -> jsonrpsee::types::SubscriptionResult {
todo!()
}
}

View File

@@ -11,6 +11,7 @@
//!
//! Provides the implementation of all RPC interfaces.
mod admin;
mod engine;
mod eth;
mod net;