Commit 5d5295c4 authored by nanamicat's avatar nanamicat

metric

parent d6abf586
Pipeline #42460 passed with stages
in 2 minutes and 16 seconds
use crate::data::{ConnectionData, RouterData}; use crate::data::{ConnectionData, RouterData};
use crate::protocol::{Downlink, MessageType, PeerQuality, Uplink}; use crate::protocol::{Downlink, MessageType, PeerQuality, Uplink};
use crate::quality::Quality; use crate::quality::Quality;
use crate::settings::{HALF_LIFE, PENALTY}; use crate::settings::{HALF_LIFE, PENALTY, PENALTY_MIN};
use crate::UpdatingState; use crate::UpdatingState;
use serde::Serialize; use serde::Serialize;
use std::collections::BTreeMap; use std::collections::BTreeMap;
...@@ -140,7 +140,7 @@ impl Router { ...@@ -140,7 +140,7 @@ impl Router {
} }
pub fn penalty(&self, now: Instant) -> i32 { pub fn penalty(&self, now: Instant) -> i32 {
(PENALTY as f32 * f32::exp2(-now.duration_since(self.last_update).div_duration_f32(HALF_LIFE))) as 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> {
......
...@@ -11,3 +11,4 @@ pub struct Settings { ...@@ -11,3 +11,4 @@ pub struct Settings {
pub const TIMEOUT: Duration = Duration::from_secs(20); pub const TIMEOUT: Duration = Duration::from_secs(20);
pub const HALF_LIFE: Duration = Duration::from_secs(60); pub const HALF_LIFE: Duration = Duration::from_secs(60);
pub const PENALTY: i32 = 100; pub const PENALTY: i32 = 100;
pub const PENALTY_MIN: i32 = 10;
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