mirror of
https://github.com/paradigmxyz/reth.git
synced 2026-04-08 03:01:12 -04:00
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:
38
crates/net/rpc/src/admin/mod.rs
Normal file
38
crates/net/rpc/src/admin/mod.rs
Normal 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!()
|
||||
}
|
||||
}
|
||||
@@ -11,6 +11,7 @@
|
||||
//!
|
||||
//! Provides the implementation of all RPC interfaces.
|
||||
|
||||
mod admin;
|
||||
mod engine;
|
||||
mod eth;
|
||||
mod net;
|
||||
|
||||
Reference in New Issue
Block a user