peer_mgr: add register() for rpc

This commit is contained in:
Luna Yao
2026-04-06 11:54:51 +02:00
parent e4f2078ff1
commit 1b220dd825
2 changed files with 23 additions and 18 deletions
+2 -11
View File
@@ -41,18 +41,8 @@ impl DnsNode {
global_ctx: ArcGlobalCtx, global_ctx: ArcGlobalCtx,
#[cfg(feature = "tun")] nic_ctx: ArcNicCtx, // TODO: REMOVE THIS #[cfg(feature = "tun")] nic_ctx: ArcNicCtx, // TODO: REMOVE THIS
) -> Self { ) -> Self {
let mgr = Arc::new(DnsPeerMgr::new(peer_mgr.clone()));
peer_mgr
.get_peer_rpc_mgr()
.rpc_server()
.registry()
.register(
DnsPeerMgrRpcServer::new_arc(mgr.clone()),
&global_ctx.get_network_name(),
);
Self { Self {
mgr, mgr: Arc::new(DnsPeerMgr::new(peer_mgr.clone(), global_ctx.clone())),
#[cfg(feature = "tun")] #[cfg(feature = "tun")]
nic_ctx, nic_ctx,
peer_mgr, peer_mgr,
@@ -67,6 +57,7 @@ impl DnsNode {
} }
pub fn start(&self) { pub fn start(&self) {
self.mgr.register();
let this = self.clone(); let this = self.clone();
self.runtime.start(None, |token| async move { self.runtime.start(None, |token| async move {
tracing::info!("starting DnsNode"); tracing::info!("starting DnsNode");
+21 -7
View File
@@ -1,3 +1,4 @@
use crate::common::global_ctx::ArcGlobalCtx;
use crate::common::PeerId; use crate::common::PeerId;
use crate::dns::config::{DnsExportConfig, DnsGlobalCtxExt}; use crate::dns::config::{DnsExportConfig, DnsGlobalCtxExt};
use crate::dns::utils::dirty::DirtyFlag; use crate::dns::utils::dirty::DirtyFlag;
@@ -6,8 +7,8 @@ use crate::peer_center::instance::PeerCenterPeerManagerTrait;
use crate::peers::peer_manager::PeerManager; use crate::peers::peer_manager::PeerManager;
use crate::peers::route_trait::Route; use crate::peers::route_trait::Route;
use crate::proto::dns::{ use crate::proto::dns::{
DnsPeerMgrRpc, DnsPeerMgrRpcClientFactory, DnsSnapshot, GetExportConfigRequest, DnsPeerMgrRpc, DnsPeerMgrRpcClientFactory, DnsPeerMgrRpcServer, DnsSnapshot,
GetExportConfigResponse, ZoneData, GetExportConfigRequest, GetExportConfigResponse, ZoneData,
}; };
use crate::proto::rpc_types; use crate::proto::rpc_types;
use crate::proto::rpc_types::controller::BaseController; use crate::proto::rpc_types::controller::BaseController;
@@ -45,19 +46,32 @@ pub struct DnsPeerMgr {
pub(super) dirty: DirtyFlag, pub(super) dirty: DirtyFlag,
peer_mgr: Arc<PeerManager>, peer_mgr: Arc<PeerManager>,
global_ctx: ArcGlobalCtx,
} }
impl DnsPeerMgr { impl DnsPeerMgr {
pub fn new(peer_mgr: Arc<PeerManager>) -> Self { pub fn new(peer_mgr: Arc<PeerManager>, global_ctx: ArcGlobalCtx) -> Self {
Self { Self {
peers: Cache::builder().time_to_live(DNS_PEER_TTL).build(), peers: Cache::builder().time_to_live(DNS_PEER_TTL).build(),
dirty: Default::default(), dirty: Default::default(),
peer_mgr: peer_mgr.clone(), peer_mgr,
global_ctx,
} }
} }
pub fn register(self: &Arc<Self>) {
self.peer_mgr
.get_peer_rpc_mgr()
.rpc_server()
.registry()
.register(
DnsPeerMgrRpcServer::new_arc(self.clone()),
&self.global_ctx.get_network_name(),
);
}
pub fn snapshot(&self) -> DnsSnapshot { pub fn snapshot(&self) -> DnsSnapshot {
let global_ctx = self.peer_mgr.get_global_ctx_ref(); let global_ctx = &self.global_ctx;
let zones = global_ctx let zones = global_ctx
.dns_iter_zones() .dns_iter_zones()
@@ -125,7 +139,7 @@ impl DnsPeerMgr {
.scoped_client::<DnsPeerMgrRpcClientFactory<BaseController>>( .scoped_client::<DnsPeerMgrRpcClientFactory<BaseController>>(
self.peer_mgr.my_peer_id(), self.peer_mgr.my_peer_id(),
peer_id, peer_id,
"".to_string(), self.global_ctx.get_network_name(),
) )
.get_export_config(BaseController::default(), GetExportConfigRequest {}) .get_export_config(BaseController::default(), GetExportConfigRequest {})
.await .await
@@ -143,6 +157,6 @@ impl DnsPeerMgrRpc for DnsPeerMgr {
_: Self::Controller, _: Self::Controller,
_: GetExportConfigRequest, _: GetExportConfigRequest,
) -> rpc_types::error::Result<GetExportConfigResponse> { ) -> rpc_types::error::Result<GetExportConfigResponse> {
Ok(self.peer_mgr.get_global_ctx_ref().dns_export_config()) Ok(self.global_ctx.dns_export_config())
} }
} }