Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 2c1bdfd

Browse files
committedFeb 6, 2025·
add set method on CombinedScorer to overwrite local data
This commit expands on the previously introduced merge method by offering a way to simply replace the local scores by the liquidity information that is obtained from an external source.
1 parent a4993a4 commit 2c1bdfd

File tree

1 file changed

+32
-11
lines changed

1 file changed

+32
-11
lines changed
 

‎lightning/src/routing/scoring.rs

+32-11
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ use crate::util::ser::{Readable, ReadableArgs, Writeable, Writer};
5959
use crate::util::logger::Logger;
6060
use crate::prelude::*;
6161
use crate::prelude::hash_map::Entry;
62-
use core::{cmp, fmt};
62+
use core::{cmp, fmt, mem};
6363
use core::ops::{Deref, DerefMut};
6464
use core::time::Duration;
6565
use crate::io::{self, Read};
@@ -1143,6 +1143,11 @@ impl<G: Deref<Target = NetworkGraph<L>>, L: Deref> ProbabilisticScorer<G, L> whe
11431143
}
11441144
None
11451145
}
1146+
1147+
/// Overwrite the scorer state with the given external scores.
1148+
pub fn set(&mut self, external_scores: ChannelLiquidities) {
1149+
_ = mem::replace(&mut self.channel_liquidities, external_scores);
1150+
}
11461151
}
11471152

11481153
impl ChannelLiquidity {
@@ -1746,6 +1751,11 @@ impl<G: Deref<Target = NetworkGraph<L>> + Clone, L: Deref + Clone> CombinedScore
17461751
self.scorer.channel_liquidities.insert(scid, liquidity);
17471752
}
17481753
}
1754+
1755+
/// Overwrite the scorer state with the given external scores.
1756+
pub fn set(&mut self, external_scores: ChannelLiquidities) {
1757+
self.scorer.set(external_scores);
1758+
}
17491759
}
17501760

17511761
impl<G: Deref<Target = NetworkGraph<L>>, L: Deref> ScoreLookUp for CombinedScorer<G, L> where L::Target: Logger {
@@ -3962,6 +3972,19 @@ mod tests {
39623972
},
39633973
};
39643974

3975+
let logger_rc = Rc::new(&logger);
3976+
3977+
let mut external_liquidity = ChannelLiquidity::new(Duration::ZERO);
3978+
external_liquidity.as_directed_mut(&source_node_id(), &target_node_id(), 1_000).successful(
3979+
1000,
3980+
Duration::ZERO,
3981+
format_args!("test channel"),
3982+
logger_rc.as_ref(),
3983+
);
3984+
3985+
let mut external_scores = ChannelLiquidities::new();
3986+
external_scores.insert(42, external_liquidity);
3987+
39653988
{
39663989
let network_graph = network_graph.read_only();
39673990
let channel = network_graph.channel(42).unwrap();
@@ -3971,16 +3994,7 @@ mod tests {
39713994

39723995
let penalty = combined_scorer.channel_penalty_msat(&candidate, usage, &params);
39733996

3974-
let mut external_liquidity = ChannelLiquidity::new(Duration::ZERO);
3975-
let logger_rc = Rc::new(&logger); // Why necessary and not above for the network graph?
3976-
external_liquidity
3977-
.as_directed_mut(&source_node_id(), &target_node_id(), 1_000)
3978-
.successful(1000, Duration::ZERO, format_args!("test channel"), logger_rc.as_ref());
3979-
3980-
let mut external_scores = ChannelLiquidities::new();
3981-
3982-
external_scores.insert(42, external_liquidity);
3983-
combined_scorer.merge(external_scores, Duration::ZERO);
3997+
combined_scorer.merge(external_scores.clone(), Duration::ZERO);
39843998

39853999
let penalty_after_merge =
39864000
combined_scorer.channel_penalty_msat(&candidate, usage, &params);
@@ -3993,6 +4007,13 @@ mod tests {
39934007
let liquidity_range =
39944008
combined_scorer.scorer.estimated_channel_liquidity_range(42, &target_node_id());
39954009
assert_eq!(liquidity_range.unwrap(), (0, 300));
4010+
4011+
// Now set (overwrite) the scorer state with the external data which should lead to an even greater liquidity
4012+
// range. Just the success from the external source is now considered.
4013+
combined_scorer.set(external_scores);
4014+
let liquidity_range =
4015+
combined_scorer.scorer.estimated_channel_liquidity_range(42, &target_node_id());
4016+
assert_eq!(liquidity_range.unwrap(), (0, 0));
39964017
}
39974018
}
39984019

0 commit comments

Comments
 (0)
Please sign in to comment.