Commit 7e86e199 authored by nanamicat's avatar nanamicat

clean

parent c89091fc
Pipeline #42464 passed with stages
in 51 seconds
max_width = 180 max_width = 200
\ No newline at end of file \ No newline at end of file
...@@ -51,14 +51,6 @@ impl Router { ...@@ -51,14 +51,6 @@ impl Router {
last_update: Instant::now(), last_update: Instant::now(),
addr: None, addr: None,
} }
// router.reset(all_router_ids);
// router
}
pub fn reset(&mut self) {
for (to, via) in self.via.iter_mut() {
*via = *to;
}
} }
pub fn online(&mut self, addr: SocketAddr, now: Instant) { pub fn online(&mut self, addr: SocketAddr, now: Instant) {
...@@ -80,7 +72,7 @@ impl Router { ...@@ -80,7 +72,7 @@ impl Router {
self.addr.is_some() self.addr.is_some()
} }
pub fn apply_peers(&mut self, uplink: &mut Uplink) { pub fn on_message(&mut self, uplink: &mut Uplink, addr: SocketAddr, updating: &mut UpdatingState, now: Instant) -> Option<Downlink> {
if uplink.peers.len() == self.peers.len() { if uplink.peers.len() == self.peers.len() {
for (current, new) in self.peers.values_mut().zip(&mut uplink.peers) { for (current, new) in self.peers.values_mut().zip(&mut uplink.peers) {
*current = *new *current = *new
...@@ -88,23 +80,20 @@ impl Router { ...@@ -88,23 +80,20 @@ impl Router {
} else if uplink.peers.len() != 0 { } else if uplink.peers.len() != 0 {
tracing::error!("router {} peers count wrong. local {} remote {}", self.id, self.peers.len(), uplink.peers.len()); tracing::error!("router {} peers count wrong. local {} remote {}", self.id, self.peers.len(), uplink.peers.len());
} }
}
pub fn on_message(&mut self, uplink: &mut Uplink, addr: SocketAddr, updating: &mut UpdatingState, now: Instant) -> Option<Downlink> {
match uplink.action { match uplink.action {
MessageType::Query => { MessageType::Query => Some(Downlink {
self.apply_peers(uplink); action: MessageType::Full,
Some(Downlink { version: self.version,
action: MessageType::Full, ack: uplink.version,
version: self.version, via: self.via.iter().filter(|(k, v)| k != v).map(|(&k, &v)| (k, v)).collect(),
ack: uplink.version, plan: self.plan.clone(),
via: self.via.iter().filter(|(k, v)| k != v).map(|(&k, &v)| (k, v)).collect(), }),
plan: self.plan.clone(),
})
}
MessageType::Full => { MessageType::Full => {
if uplink.version == self.version { if uplink.version == self.version {
self.reset(); for (to, via) in self.via.iter_mut() {
*via = *to;
}
self.via.append(&mut uplink.via); self.via.append(&mut uplink.via);
self.plan.append(&mut uplink.plan); self.plan.append(&mut uplink.plan);
self.online(addr, now); self.online(addr, now);
...@@ -112,7 +101,6 @@ impl Router { ...@@ -112,7 +101,6 @@ impl Router {
None None
} }
MessageType::Update => { MessageType::Update => {
self.apply_peers(uplink);
if uplink.version == self.version { if uplink.version == self.version {
self.online(addr, now); self.online(addr, now);
if updating.router_id == self.id { if updating.router_id == self.id {
...@@ -140,12 +128,8 @@ impl Router { ...@@ -140,12 +128,8 @@ impl Router {
} }
} }
pub fn penalty(&self, now: Instant) -> i32 {
PENALTY_MIN + (PENALTY as f32 * f32::exp2(-now.duration_since(self.last_update).div_duration_f32(HALF_LIFE))) as i32
}
pub fn update(&self, now: Instant, routers: &BTreeMap<u8, Router>, connections: &BTreeMap<u8, BTreeMap<u8, ConnectionData>>) -> Option<Downlink> { pub fn update(&self, now: Instant, routers: &BTreeMap<u8, Router>, connections: &BTreeMap<u8, BTreeMap<u8, ConnectionData>>) -> Option<Downlink> {
let penalty = self.penalty(now); let penalty = PENALTY_MIN + (PENALTY as f32 * f32::exp2(-now.duration_since(self.last_update).div_duration_f32(HALF_LIFE))) as i32;
let mut changed_via: BTreeMap<u8, u8> = BTreeMap::new(); let mut changed_via: BTreeMap<u8, u8> = BTreeMap::new();
// let mut metric: BTreeMap<u8, i32> = BTreeMap::new(); // let mut metric: BTreeMap<u8, i32> = BTreeMap::new();
let mut overcome = false; let mut overcome = false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment