Skip to content

Commit f17b861

Browse files
Parameterize Simple*ChannelManager with DefaultRouter and ProbScorer
1 parent c85fcd3 commit f17b861

File tree

4 files changed

+25
-12
lines changed

4 files changed

+25
-12
lines changed

lightning-background-processor/src/lib.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -584,6 +584,7 @@ mod tests {
584584
use lightning::ln::peer_handler::{PeerManager, MessageHandler, SocketDescriptor, IgnoringMessageHandler};
585585
use lightning::routing::gossip::{NetworkGraph, P2PGossipSync};
586586
use lightning::routing::router::DefaultRouter;
587+
use lightning::routing::scoring::{ProbabilisticScoringParameters, ProbabilisticScorer};
587588
use lightning::util::config::UserConfig;
588589
use lightning::util::events::{Event, MessageSendEventsProvider, MessageSendEvent};
589590
use lightning::util::ser::Writeable;
@@ -598,7 +599,6 @@ mod tests {
598599
use std::time::Duration;
599600
use bitcoin::hashes::Hash;
600601
use bitcoin::TxMerkleNode;
601-
use lightning::routing::scoring::{FixedPenaltyScorer};
602602
use lightning_rapid_gossip_sync::RapidGossipSync;
603603
use super::{BackgroundProcessor, GossipSync, FRESHNESS_TIMER};
604604

@@ -620,7 +620,7 @@ mod tests {
620620
type RGS = Arc<RapidGossipSync<Arc<NetworkGraph<Arc<test_utils::TestLogger>>>, Arc<test_utils::TestLogger>>>;
621621

622622
struct Node {
623-
node: Arc<SimpleArcChannelManager<ChainMonitor, test_utils::TestBroadcaster, test_utils::TestFeeEstimator, DefaultRouter<Arc<NetworkGraph<Arc<test_utils::TestLogger>>>, Arc<test_utils::TestLogger>, Arc<Mutex<FixedPenaltyScorer>>>, test_utils::TestLogger>>,
623+
node: Arc<SimpleArcChannelManager<ChainMonitor, test_utils::TestBroadcaster, test_utils::TestFeeEstimator, test_utils::TestLogger>>,
624624
p2p_gossip_sync: PGS,
625625
rapid_gossip_sync: RGS,
626626
peer_manager: Arc<PeerManager<TestDescriptor, Arc<test_utils::TestChannelMessageHandler>, Arc<test_utils::TestRoutingMessageHandler>, IgnoringMessageHandler, Arc<test_utils::TestLogger>, IgnoringMessageHandler>>,
@@ -630,7 +630,7 @@ mod tests {
630630
network_graph: Arc<NetworkGraph<Arc<test_utils::TestLogger>>>,
631631
logger: Arc<test_utils::TestLogger>,
632632
best_block: BestBlock,
633-
scorer: Arc<Mutex<FixedPenaltyScorer>>,
633+
scorer: Arc<Mutex<ProbabilisticScorer<Arc<NetworkGraph<Arc<test_utils::TestLogger>>>, Arc<test_utils::TestLogger>>>>,
634634
}
635635

636636
impl Node {
@@ -731,7 +731,8 @@ mod tests {
731731
let network = Network::Testnet;
732732
let genesis_block = genesis_block(network);
733733
let network_graph = Arc::new(NetworkGraph::new(genesis_block.header.block_hash(), logger.clone()));
734-
let scorer = Arc::new(Mutex::new(test_utils::TestScorer::with_penalty(0)));
734+
let params = ProbabilisticScoringParameters::default();
735+
let scorer = Arc::new(Mutex::new(ProbabilisticScorer::new(params, network_graph.clone(), logger.clone())));
735736
let seed = [i as u8; 32];
736737
let router = Arc::new(DefaultRouter::new(network_graph.clone(), logger.clone(), seed, scorer.clone()));
737738
let chain_source = Arc::new(test_utils::TestChainSource::new(Network::Testnet));

lightning-net-tokio/src/lib.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,13 @@
3131
//! // Define concrete types for our high-level objects:
3232
//! type TxBroadcaster = dyn lightning::chain::chaininterface::BroadcasterInterface + Send + Sync;
3333
//! type FeeEstimator = dyn lightning::chain::chaininterface::FeeEstimator + Send + Sync;
34-
//! type Router = dyn lightning::routing::router::Router + Send + Sync;
3534
//! type Logger = dyn lightning::util::logger::Logger + Send + Sync;
3635
//! type ChainAccess = dyn lightning::chain::Access + Send + Sync;
3736
//! type ChainFilter = dyn lightning::chain::Filter + Send + Sync;
3837
//! type DataPersister = dyn lightning::chain::chainmonitor::Persist<lightning::chain::keysinterface::InMemorySigner> + Send + Sync;
3938
//! type ChainMonitor = lightning::chain::chainmonitor::ChainMonitor<lightning::chain::keysinterface::InMemorySigner, Arc<ChainFilter>, Arc<TxBroadcaster>, Arc<FeeEstimator>, Arc<Logger>, Arc<DataPersister>>;
40-
//! type ChannelManager = Arc<lightning::ln::channelmanager::SimpleArcChannelManager<ChainMonitor, TxBroadcaster, FeeEstimator, Router, Logger>>;
41-
//! type PeerManager = Arc<lightning::ln::peer_handler::SimpleArcPeerManager<lightning_net_tokio::SocketDescriptor, ChainMonitor, TxBroadcaster, FeeEstimator, ChainAccess, Router, Logger>>;
39+
//! type ChannelManager = Arc<lightning::ln::channelmanager::SimpleArcChannelManager<ChainMonitor, TxBroadcaster, FeeEstimator, Logger>>;
40+
//! type PeerManager = Arc<lightning::ln::peer_handler::SimpleArcPeerManager<lightning_net_tokio::SocketDescriptor, ChainMonitor, TxBroadcaster, FeeEstimator, ChainAccess, Logger>>;
4241
//!
4342
//! // Connect to node with pubkey their_node_id at addr:
4443
//! async fn connect_to_node(peer_manager: PeerManager, chain_monitor: Arc<ChainMonitor>, channel_manager: ChannelManager, their_node_id: PublicKey, addr: SocketAddr) {

lightning/src/ln/channelmanager.rs

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,9 @@ use crate::ln::channel::{Channel, ChannelError, ChannelUpdateStatus, UpdateFulfi
4646
use crate::ln::features::{ChannelFeatures, ChannelTypeFeatures, InitFeatures, NodeFeatures};
4747
#[cfg(any(feature = "_test_utils", test))]
4848
use crate::ln::features::InvoiceFeatures;
49-
use crate::routing::router::{InFlightHtlcs, PaymentParameters, Route, RouteHop, RoutePath, Router};
49+
use crate::routing::gossip::NetworkGraph;
50+
use crate::routing::router::{DefaultRouter, InFlightHtlcs, PaymentParameters, Route, RouteHop, RoutePath, Router};
51+
use crate::routing::scoring::ProbabilisticScorer;
5052
use crate::ln::msgs;
5153
use crate::ln::onion_utils;
5254
use crate::ln::onion_utils::HTLCFailReason;
@@ -495,7 +497,18 @@ struct PendingInboundPayment {
495497
/// concrete type of the KeysManager.
496498
///
497499
/// (C-not exported) as Arcs don't make sense in bindings
498-
pub type SimpleArcChannelManager<M, T, F, R, L> = ChannelManager<Arc<M>, Arc<T>, Arc<KeysManager>, Arc<F>, Arc<R>, Arc<L>>;
500+
pub type SimpleArcChannelManager<M, T, F, L> = ChannelManager<
501+
Arc<M>,
502+
Arc<T>,
503+
Arc<KeysManager>,
504+
Arc<F>,
505+
Arc<DefaultRouter<
506+
Arc<NetworkGraph<Arc<L>>>,
507+
Arc<L>,
508+
Arc<Mutex<ProbabilisticScorer<Arc<NetworkGraph<Arc<L>>>, Arc<L>>>>
509+
>>,
510+
Arc<L>
511+
>;
499512

500513
/// SimpleRefChannelManager is a type alias for a ChannelManager reference, and is the reference
501514
/// counterpart to the SimpleArcChannelManager type alias. Use this type by default when you don't
@@ -507,7 +520,7 @@ pub type SimpleArcChannelManager<M, T, F, R, L> = ChannelManager<Arc<M>, Arc<T>,
507520
/// concrete type of the KeysManager.
508521
///
509522
/// (C-not exported) as Arcs don't make sense in bindings
510-
pub type SimpleRefChannelManager<'a, 'b, 'c, 'd, 'e, 'f, M, T, F, R, L> = ChannelManager<&'a M, &'b T, &'c KeysManager, &'d F, &'e R, &'f L>;
523+
pub type SimpleRefChannelManager<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, M, T, F, L> = ChannelManager<&'a M, &'b T, &'c KeysManager, &'d F, &'e DefaultRouter<&'f NetworkGraph<&'g L>, &'g L, &'h Mutex<ProbabilisticScorer<&'f NetworkGraph<&'g L>, &'g L>>>, &'g L>;
511524

512525
/// Manager which keeps track of a number of channels and sends messages to the appropriate
513526
/// channel, also tracking HTLC preimages and forwarding onion packets appropriately.

lightning/src/ln/peer_handler.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -491,7 +491,7 @@ impl Peer {
491491
/// issues such as overly long function definitions.
492492
///
493493
/// (C-not exported) as `Arc`s don't make sense in bindings.
494-
pub type SimpleArcPeerManager<SD, M, T, F, C, R, L> = PeerManager<SD, Arc<SimpleArcChannelManager<M, T, F, R, L>>, Arc<P2PGossipSync<Arc<NetworkGraph<Arc<L>>>, Arc<C>, Arc<L>>>, Arc<SimpleArcOnionMessenger<L>>, Arc<L>, IgnoringMessageHandler>;
494+
pub type SimpleArcPeerManager<SD, M, T, F, C, L> = PeerManager<SD, Arc<SimpleArcChannelManager<M, T, F, L>>, Arc<P2PGossipSync<Arc<NetworkGraph<Arc<L>>>, Arc<C>, Arc<L>>>, Arc<SimpleArcOnionMessenger<L>>, Arc<L>, IgnoringMessageHandler>;
495495

496496
/// SimpleRefPeerManager is a type alias for a PeerManager reference, and is the reference
497497
/// counterpart to the SimpleArcPeerManager type alias. Use this type by default when you don't
@@ -501,7 +501,7 @@ pub type SimpleArcPeerManager<SD, M, T, F, C, R, L> = PeerManager<SD, Arc<Simple
501501
/// helps with issues such as long function definitions.
502502
///
503503
/// (C-not exported) as general type aliases don't make sense in bindings.
504-
pub type SimpleRefPeerManager<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j, 'k, 'l, SD, M, T, F, C, R, L> = PeerManager<SD, SimpleRefChannelManager<'a, 'b, 'c, 'd, 'e, 'f, M, T, F, R, L>, &'f P2PGossipSync<&'g NetworkGraph<&'f L>, &'h C, &'f L>, &'i SimpleRefOnionMessenger<'j, 'k, L>, &'f L, IgnoringMessageHandler>;
504+
pub type SimpleRefPeerManager<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j, 'k, 'l, 'm, SD, M, T, F, C, L> = PeerManager<SD, SimpleRefChannelManager<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'm, M, T, F, L>, &'f P2PGossipSync<&'g NetworkGraph<&'f L>, &'h C, &'f L>, &'i SimpleRefOnionMessenger<'j, 'k, L>, &'f L, IgnoringMessageHandler>;
505505

506506
/// A PeerManager manages a set of peers, described by their [`SocketDescriptor`] and marshalls
507507
/// socket events into messages which it passes on to its [`MessageHandler`].

0 commit comments

Comments
 (0)