mirror of
https://github.com/EasyTier/EasyTier.git
synced 2026-09-02 17:15:43 +00:00
server: use select! for run
This commit is contained in:
+36
-30
@@ -225,40 +225,46 @@ impl DnsServer {
|
|||||||
let dirty = &self.mgr.dirty;
|
let dirty = &self.mgr.dirty;
|
||||||
let mut runtime = None;
|
let mut runtime = None;
|
||||||
|
|
||||||
tokio::join!(
|
let reload_catalog = async {
|
||||||
async {
|
loop {
|
||||||
loop {
|
dirty.catalog.notified().await;
|
||||||
dirty.catalog.notified().await;
|
if dirty.catalog.reset() {
|
||||||
if dirty.catalog.reset() {
|
self.catalog.replace(self.mgr.catalog()).await;
|
||||||
self.catalog.replace(self.mgr.catalog()).await;
|
|
||||||
}
|
|
||||||
tokio::time::sleep(Duration::from_secs(1)).await;
|
|
||||||
}
|
}
|
||||||
},
|
tokio::time::sleep(Duration::from_secs(1)).await;
|
||||||
async {
|
}
|
||||||
loop {
|
};
|
||||||
dirty.addresses.notified().await;
|
|
||||||
if dirty.addresses.reset() {
|
let reload_addresses = async {
|
||||||
self.reload_addresses(self.mgr.iter_addresses()).await;
|
loop {
|
||||||
}
|
dirty.addresses.notified().await;
|
||||||
tokio::time::sleep(Duration::from_secs(1)).await;
|
if dirty.addresses.reset() {
|
||||||
|
self.reload_addresses(self.mgr.iter_addresses()).await;
|
||||||
}
|
}
|
||||||
},
|
tokio::time::sleep(Duration::from_secs(1)).await;
|
||||||
async {
|
}
|
||||||
loop {
|
};
|
||||||
dirty.listeners.notified().await;
|
|
||||||
if dirty.listeners.reset() {
|
let reload_listeners = async {
|
||||||
if let Err(e) = self
|
loop {
|
||||||
.reload_listeners(self.mgr.iter_listeners(), &mut runtime)
|
dirty.listeners.notified().await;
|
||||||
.await
|
if dirty.listeners.reset() {
|
||||||
{
|
if let Err(e) = self
|
||||||
tracing::error!("failed to reload listeners: {:?}", e);
|
.reload_listeners(self.mgr.iter_listeners(), &mut runtime)
|
||||||
dirty.listeners.mark();
|
.await
|
||||||
}
|
{
|
||||||
|
tracing::error!("failed to reload listeners: {:?}", e);
|
||||||
|
dirty.listeners.mark();
|
||||||
}
|
}
|
||||||
tokio::time::sleep(Duration::from_secs(1)).await;
|
|
||||||
}
|
}
|
||||||
},
|
tokio::time::sleep(Duration::from_secs(1)).await;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
tokio::select!(
|
||||||
|
_ = reload_catalog => {},
|
||||||
|
_ = reload_addresses => {},
|
||||||
|
_ = reload_listeners => {},
|
||||||
);
|
);
|
||||||
|
|
||||||
self.reload_addresses(iter::empty()).await;
|
self.reload_addresses(iter::empty()).await;
|
||||||
|
|||||||
Reference in New Issue
Block a user