From: henghonglee Date: Wed, 10 May 2023 05:13:42 +0000 (-0700) Subject: Move functions around to colocate impl of FeeParams and DecayParams X-Git-Tag: v0.0.116-alpha1~40^2 X-Git-Url: http://git.bitcoin.ninja/?a=commitdiff_plain;h=86af670afa8f5c5d9ba072c475027515c0f09bdb;p=rust-lightning Move functions around to colocate impl of FeeParams and DecayParams --- diff --git a/lightning/src/routing/scoring.rs b/lightning/src/routing/scoring.rs index 9298a17b6..235b1a148 100644 --- a/lightning/src/routing/scoring.rs +++ b/lightning/src/routing/scoring.rs @@ -519,6 +519,75 @@ pub struct ProbabilisticScoringFeeParameters { pub considered_impossible_penalty_msat: u64, } +impl Default for ProbabilisticScoringFeeParameters { + fn default() -> Self { + Self { + base_penalty_msat: 500, + base_penalty_amount_multiplier_msat: 8192, + liquidity_penalty_multiplier_msat: 30_000, + liquidity_penalty_amount_multiplier_msat: 192, + manual_node_penalties: HashMap::new(), + anti_probing_penalty_msat: 250, + considered_impossible_penalty_msat: 1_0000_0000_000, + historical_liquidity_penalty_multiplier_msat: 10_000, + historical_liquidity_penalty_amount_multiplier_msat: 64, + } + } +} + +impl ProbabilisticScoringFeeParameters { + /// Marks the node with the given `node_id` as banned, + /// i.e it will be avoided during path finding. + pub fn add_banned(&mut self, node_id: &NodeId) { + self.manual_node_penalties.insert(*node_id, u64::max_value()); + } + + /// Marks all nodes in the given list as banned, i.e., + /// they will be avoided during path finding. + pub fn add_banned_from_list(&mut self, node_ids: Vec) { + for id in node_ids { + self.manual_node_penalties.insert(id, u64::max_value()); + } + } + + /// Removes the node with the given `node_id` from the list of nodes to avoid. + pub fn remove_banned(&mut self, node_id: &NodeId) { + self.manual_node_penalties.remove(node_id); + } + + /// Sets a manual penalty for the given node. + pub fn set_manual_penalty(&mut self, node_id: &NodeId, penalty: u64) { + self.manual_node_penalties.insert(*node_id, penalty); + } + + /// Removes the node with the given `node_id` from the list of manual penalties. + pub fn remove_manual_penalty(&mut self, node_id: &NodeId) { + self.manual_node_penalties.remove(node_id); + } + + /// Clears the list of manual penalties that are applied during path finding. + pub fn clear_manual_penalties(&mut self) { + self.manual_node_penalties = HashMap::new(); + } +} + +#[cfg(test)] +impl ProbabilisticScoringFeeParameters { + fn zero_penalty() -> Self { + Self { + base_penalty_msat: 0, + base_penalty_amount_multiplier_msat: 0, + liquidity_penalty_multiplier_msat: 0, + liquidity_penalty_amount_multiplier_msat: 0, + historical_liquidity_penalty_multiplier_msat: 0, + historical_liquidity_penalty_amount_multiplier_msat: 0, + manual_node_penalties: HashMap::new(), + anti_probing_penalty_msat: 0, + considered_impossible_penalty_msat: 0, + } + } +} + /// Parameters for configuring [`ProbabilisticScorer`]. /// /// Used to configure decay parameters that are static throughout the lifetime of the scorer. @@ -561,9 +630,8 @@ pub struct ProbabilisticScoringDecayParameters { pub liquidity_offset_half_life: Duration, } -#[cfg(test)] -impl ProbabilisticScoringDecayParameters { - fn zero_penalty() -> Self { +impl Default for ProbabilisticScoringDecayParameters { + fn default() -> Self { Self { liquidity_offset_half_life: Duration::from_secs(6 * 60 * 60), historical_no_updates_half_life: Duration::from_secs(60 * 60 * 24 * 14), @@ -571,14 +639,16 @@ impl ProbabilisticScoringDecayParameters { } } -impl Default for ProbabilisticScoringDecayParameters { - fn default() -> Self { +#[cfg(test)] +impl ProbabilisticScoringDecayParameters { + fn zero_penalty() -> Self { Self { liquidity_offset_half_life: Duration::from_secs(6 * 60 * 60), historical_no_updates_half_life: Duration::from_secs(60 * 60 * 24 * 14), } } } + /// Tracks the historical state of a distribution as a weighted average of how much time was spent /// in each of 8 buckets. #[derive(Clone, Copy)] @@ -882,73 +952,6 @@ impl>, L: Deref, T: Time> ProbabilisticScorerU } } -impl ProbabilisticScoringFeeParameters { - #[cfg(test)] - fn zero_penalty() -> Self { - Self { - base_penalty_msat: 0, - base_penalty_amount_multiplier_msat: 0, - liquidity_penalty_multiplier_msat: 0, - liquidity_penalty_amount_multiplier_msat: 0, - historical_liquidity_penalty_multiplier_msat: 0, - historical_liquidity_penalty_amount_multiplier_msat: 0, - manual_node_penalties: HashMap::new(), - anti_probing_penalty_msat: 0, - considered_impossible_penalty_msat: 0, - } - } - - /// Marks the node with the given `node_id` as banned, i.e., - /// it will be avoided during path finding. - pub fn add_banned(&mut self, node_id: &NodeId) { - self.manual_node_penalties.insert(*node_id, u64::max_value()); - } - - /// Marks all nodes in the given list as banned, i.e., - /// they will be avoided during path finding. - pub fn add_banned_from_list(&mut self, node_ids: Vec) { - for id in node_ids { - self.manual_node_penalties.insert(id, u64::max_value()); - } - } - - /// Removes the node with the given `node_id` from the list of nodes to avoid. - pub fn remove_banned(&mut self, node_id: &NodeId) { - self.manual_node_penalties.remove(node_id); - } - - /// Sets a manual penalty for the given node. - pub fn set_manual_penalty(&mut self, node_id: &NodeId, penalty: u64) { - self.manual_node_penalties.insert(*node_id, penalty); - } - - /// Removes the node with the given `node_id` from the list of manual penalties. - pub fn remove_manual_penalty(&mut self, node_id: &NodeId) { - self.manual_node_penalties.remove(node_id); - } - - /// Clears the list of manual penalties that are applied during path finding. - pub fn clear_manual_penalties(&mut self) { - self.manual_node_penalties = HashMap::new(); - } -} - -impl Default for ProbabilisticScoringFeeParameters { - fn default() -> Self { - Self { - base_penalty_msat: 500, - base_penalty_amount_multiplier_msat: 8192, - liquidity_penalty_multiplier_msat: 30_000, - liquidity_penalty_amount_multiplier_msat: 192, - manual_node_penalties: HashMap::new(), - anti_probing_penalty_msat: 250, - considered_impossible_penalty_msat: 1_0000_0000_000, - historical_liquidity_penalty_multiplier_msat: 10_000, - historical_liquidity_penalty_amount_multiplier_msat: 64, - } - } -} - impl ChannelLiquidity { #[inline] fn new() -> Self {