Define a default MessageRouter implementation
authorJeffrey Czyz <jkczyz@gmail.com>
Sun, 25 Jun 2023 19:26:17 +0000 (14:26 -0500)
committerJeffrey Czyz <jkczyz@gmail.com>
Fri, 30 Jun 2023 14:29:37 +0000 (10:29 -0400)
Otherwise, users need to define one when using "Simple" type aliases.

lightning-background-processor/src/lib.rs
lightning/src/ln/peer_handler.rs
lightning/src/onion_message/messenger.rs

index 401c3c19ec2200cf9fd101cbd1fdb2f5b3dcce5b..517e693de6a1c1da00df8346c29ccf7d49c852f3 100644 (file)
@@ -519,9 +519,8 @@ use core::task;
 /// # type MyUtxoLookup = dyn lightning::routing::utxo::UtxoLookup + Send + Sync;
 /// # type MyFilter = dyn lightning::chain::Filter + Send + Sync;
 /// # type MyLogger = dyn lightning::util::logger::Logger + Send + Sync;
-/// # type MyMessageRouter = dyn lightning::onion_message::MessageRouter + Send + Sync;
 /// # type MyChainMonitor = lightning::chain::chainmonitor::ChainMonitor<lightning::sign::InMemorySigner, Arc<MyFilter>, Arc<MyBroadcaster>, Arc<MyFeeEstimator>, Arc<MyLogger>, Arc<MyPersister>>;
-/// # type MyPeerManager = lightning::ln::peer_handler::SimpleArcPeerManager<MySocketDescriptor, MyChainMonitor, MyBroadcaster, MyFeeEstimator, MyUtxoLookup, MyLogger, MyMessageRouter>;
+/// # type MyPeerManager = lightning::ln::peer_handler::SimpleArcPeerManager<MySocketDescriptor, MyChainMonitor, MyBroadcaster, MyFeeEstimator, MyUtxoLookup, MyLogger>;
 /// # type MyNetworkGraph = lightning::routing::gossip::NetworkGraph<Arc<MyLogger>>;
 /// # type MyGossipSync = lightning::routing::gossip::P2PGossipSync<Arc<MyNetworkGraph>, Arc<MyUtxoLookup>, Arc<MyLogger>>;
 /// # type MyChannelManager = lightning::ln::channelmanager::SimpleArcChannelManager<MyChainMonitor, MyBroadcaster, MyFeeEstimator, MyLogger>;
index 931e8c4e4245d8485962015f9937b42f25e17de6..60230af78eff6bf0ccf062a37a68926cdb96e926 100644 (file)
@@ -607,11 +607,11 @@ impl Peer {
 /// issues such as overly long function definitions.
 ///
 /// This is not exported to bindings users as `Arc`s don't make sense in bindings.
-pub type SimpleArcPeerManager<SD, M, T, F, C, L, R> = PeerManager<
+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, R>>,
+       Arc<SimpleArcOnionMessenger<L>>,
        Arc<L>,
        IgnoringMessageHandler,
        Arc<KeysManager>
@@ -626,12 +626,12 @@ pub type SimpleArcPeerManager<SD, M, T, F, C, L, R> = PeerManager<
 ///
 /// This is not exported to bindings users as general type aliases don't make sense in bindings.
 pub type SimpleRefPeerManager<
-       'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j, 'k, 'l, 'm, 'n, SD, M, T, F, C, L, R
+       'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j, 'k, 'l, 'm, 'n, SD, M, T, F, C, L
 > = PeerManager<
        SD,
        &'n 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<'g, 'm, 'n, L, R>,
+       &'i SimpleRefOnionMessenger<'g, 'm, 'n, L>,
        &'f L,
        IgnoringMessageHandler,
        &'c KeysManager
index 2c3cf4307349ff27bcc988806ec337952c339c9d..a3613605cdebbd1ff71014d827b70782e043a160 100644 (file)
@@ -152,6 +152,17 @@ pub trait MessageRouter {
        ) -> Result<OnionMessagePath, ()>;
 }
 
+/// A [`MessageRouter`] that always fails.
+pub struct DefaultMessageRouter;
+
+impl MessageRouter for DefaultMessageRouter {
+       fn find_path(
+               &self, _sender: PublicKey, _peers: Vec<PublicKey>, _destination: Destination
+       ) -> Result<OnionMessagePath, ()> {
+               Err(())
+       }
+}
+
 /// A path for sending an [`msgs::OnionMessage`].
 #[derive(Clone)]
 pub struct OnionMessagePath {
@@ -598,11 +609,11 @@ where
 ///
 /// [`SimpleArcChannelManager`]: crate::ln::channelmanager::SimpleArcChannelManager
 /// [`SimpleArcPeerManager`]: crate::ln::peer_handler::SimpleArcPeerManager
-pub type SimpleArcOnionMessenger<L, R> = OnionMessenger<
+pub type SimpleArcOnionMessenger<L> = OnionMessenger<
        Arc<KeysManager>,
        Arc<KeysManager>,
        Arc<L>,
-       Arc<R>,
+       Arc<DefaultMessageRouter>,
        IgnoringMessageHandler,
        IgnoringMessageHandler
 >;
@@ -614,11 +625,11 @@ pub type SimpleArcOnionMessenger<L, R> = OnionMessenger<
 ///
 /// [`SimpleRefChannelManager`]: crate::ln::channelmanager::SimpleRefChannelManager
 /// [`SimpleRefPeerManager`]: crate::ln::peer_handler::SimpleRefPeerManager
-pub type SimpleRefOnionMessenger<'a, 'b, 'c, L, R> = OnionMessenger<
+pub type SimpleRefOnionMessenger<'a, 'b, 'c, L> = OnionMessenger<
        &'a KeysManager,
        &'a KeysManager,
        &'b L,
-       &'c R,
+       &'c DefaultMessageRouter,
        IgnoringMessageHandler,
        IgnoringMessageHandler
 >;