tempo_node/rpc/
operator.rs1use alloy_rpc_types_admin::PeerInfo;
2use jsonrpsee::{core::RpcResult, proc_macros::rpc};
3use reth_chainspec::{EthChainSpec, EthereumHardforks};
4use reth_network_api::{NetworkInfo, Peers};
5use reth_rpc::AdminApi;
6use reth_rpc_api::servers::AdminApiServer as _;
7use reth_transaction_pool::TransactionPool;
8
9#[rpc(server, namespace = "operator")]
10pub trait TempoOperatorApi {
11 #[method(name = "peers")]
13 async fn peers(&self) -> RpcResult<Vec<PeerInfo>>;
14}
15
16#[derive(Debug)]
18pub struct TempoOperatorRpc<N, ChainSpec, Pool> {
19 admin_api: AdminApi<N, ChainSpec, Pool>,
20}
21
22impl<N, ChainSpec, Pool> TempoOperatorRpc<N, ChainSpec, Pool> {
23 pub const fn new(admin_api: AdminApi<N, ChainSpec, Pool>) -> Self {
24 Self { admin_api }
25 }
26}
27
28#[async_trait::async_trait]
29impl<N, ChainSpec, Pool> TempoOperatorApiServer for TempoOperatorRpc<N, ChainSpec, Pool>
30where
31 N: NetworkInfo + Peers + 'static,
32 ChainSpec: EthChainSpec + EthereumHardforks + Send + Sync + 'static,
33 Pool: TransactionPool + 'static,
34{
35 async fn peers(&self) -> RpcResult<Vec<PeerInfo>> {
36 self.admin_api.peers().await
37 }
38}