mirror of
https://github.com/EasyTier/EasyTier.git
synced 2026-09-02 09:09:17 +00:00
peer_mgr: add register() for rpc
This commit is contained in:
@@ -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");
|
||||||
|
|||||||
@@ -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())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user