Commit 7e86e199 authored by nanamicat's avatar nanamicat

clean

parent c89091fc
Pipeline #42464 passed with stages
in 51 seconds
max_width = 180
\ No newline at end of file
max_width = 200
\ No newline at end of file
......@@ -51,14 +51,6 @@ impl Router {
last_update: Instant::now(),
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) {
......@@ -80,7 +72,7 @@ impl Router {
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() {
for (current, new) in self.peers.values_mut().zip(&mut uplink.peers) {
*current = *new
......@@ -88,23 +80,20 @@ impl Router {
} else if uplink.peers.len() != 0 {
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 {
MessageType::Query => {
self.apply_peers(uplink);
Some(Downlink {
action: MessageType::Full,
version: self.version,
ack: uplink.version,
via: self.via.iter().filter(|(k, v)| k != v).map(|(&k, &v)| (k, v)).collect(),
plan: self.plan.clone(),
})
}
MessageType::Query => Some(Downlink {
action: MessageType::Full,
version: self.version,
ack: uplink.version,
via: self.via.iter().filter(|(k, v)| k != v).map(|(&k, &v)| (k, v)).collect(),
plan: self.plan.clone(),
}),
MessageType::Full => {
if uplink.version == self.version {
self.reset();
for (to, via) in self.via.iter_mut() {
*via = *to;
}
self.via.append(&mut uplink.via);
self.plan.append(&mut uplink.plan);
self.online(addr, now);
......@@ -112,7 +101,6 @@ impl Router {
None
}
MessageType::Update => {
self.apply_peers(uplink);
if uplink.version == self.version {
self.online(addr, now);
if updating.router_id == self.id {
......@@ -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> {
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 metric: BTreeMap<u8, i32> = BTreeMap::new();
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