Define a default MessageRouter implementation

Otherwise, users need to define one when using "Simple" type aliases.
This commit is contained in:
Jeffrey Czyz 2023-06-25 14:26:17 -05:00
parent bd12067777
commit 129dd30c45
No known key found for this signature in database
GPG key ID: 3A4E08275D5E96D2
3 changed files with 20 additions and 10 deletions

View file

@ -519,9 +519,8 @@ use core::task;
/// # type MyUtxoLookup = dyn lightning::routing::utxo::UtxoLookup + Send + Sync; /// # type MyUtxoLookup = dyn lightning::routing::utxo::UtxoLookup + Send + Sync;
/// # type MyFilter = dyn lightning::chain::Filter + Send + Sync; /// # type MyFilter = dyn lightning::chain::Filter + Send + Sync;
/// # type MyLogger = dyn lightning::util::logger::Logger + 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 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 MyNetworkGraph = lightning::routing::gossip::NetworkGraph<Arc<MyLogger>>;
/// # type MyGossipSync = lightning::routing::gossip::P2PGossipSync<Arc<MyNetworkGraph>, Arc<MyUtxoLookup>, Arc<MyLogger>>; /// # type MyGossipSync = lightning::routing::gossip::P2PGossipSync<Arc<MyNetworkGraph>, Arc<MyUtxoLookup>, Arc<MyLogger>>;
/// # type MyChannelManager = lightning::ln::channelmanager::SimpleArcChannelManager<MyChainMonitor, MyBroadcaster, MyFeeEstimator, MyLogger>; /// # type MyChannelManager = lightning::ln::channelmanager::SimpleArcChannelManager<MyChainMonitor, MyBroadcaster, MyFeeEstimator, MyLogger>;

View file

@ -607,11 +607,11 @@ impl Peer {
/// issues such as overly long function definitions. /// issues such as overly long function definitions.
/// ///
/// This is not exported to bindings users as `Arc`s don't make sense in bindings. /// 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, SD,
Arc<SimpleArcChannelManager<M, T, F, L>>, Arc<SimpleArcChannelManager<M, T, F, L>>,
Arc<P2PGossipSync<Arc<NetworkGraph<Arc<L>>>, Arc<C>, Arc<L>>>, Arc<P2PGossipSync<Arc<NetworkGraph<Arc<L>>>, Arc<C>, Arc<L>>>,
Arc<SimpleArcOnionMessenger<L, R>>, Arc<SimpleArcOnionMessenger<L>>,
Arc<L>, Arc<L>,
IgnoringMessageHandler, IgnoringMessageHandler,
Arc<KeysManager> 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. /// This is not exported to bindings users as general type aliases don't make sense in bindings.
pub type SimpleRefPeerManager< 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< > = PeerManager<
SD, SD,
&'n SimpleRefChannelManager<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'm, M, T, F, L>, &'n SimpleRefChannelManager<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'm, M, T, F, L>,
&'f P2PGossipSync<&'g NetworkGraph<&'f L>, &'h C, &'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, &'f L,
IgnoringMessageHandler, IgnoringMessageHandler,
&'c KeysManager &'c KeysManager

View file

@ -152,6 +152,17 @@ pub trait MessageRouter {
) -> Result<OnionMessagePath, ()>; ) -> 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`]. /// A path for sending an [`msgs::OnionMessage`].
#[derive(Clone)] #[derive(Clone)]
pub struct OnionMessagePath { pub struct OnionMessagePath {
@ -598,11 +609,11 @@ where
/// ///
/// [`SimpleArcChannelManager`]: crate::ln::channelmanager::SimpleArcChannelManager /// [`SimpleArcChannelManager`]: crate::ln::channelmanager::SimpleArcChannelManager
/// [`SimpleArcPeerManager`]: crate::ln::peer_handler::SimpleArcPeerManager /// [`SimpleArcPeerManager`]: crate::ln::peer_handler::SimpleArcPeerManager
pub type SimpleArcOnionMessenger<L, R> = OnionMessenger< pub type SimpleArcOnionMessenger<L> = OnionMessenger<
Arc<KeysManager>, Arc<KeysManager>,
Arc<KeysManager>, Arc<KeysManager>,
Arc<L>, Arc<L>,
Arc<R>, Arc<DefaultMessageRouter>,
IgnoringMessageHandler, IgnoringMessageHandler,
IgnoringMessageHandler IgnoringMessageHandler
>; >;
@ -614,11 +625,11 @@ pub type SimpleArcOnionMessenger<L, R> = OnionMessenger<
/// ///
/// [`SimpleRefChannelManager`]: crate::ln::channelmanager::SimpleRefChannelManager /// [`SimpleRefChannelManager`]: crate::ln::channelmanager::SimpleRefChannelManager
/// [`SimpleRefPeerManager`]: crate::ln::peer_handler::SimpleRefPeerManager /// [`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,
&'a KeysManager, &'a KeysManager,
&'b L, &'b L,
&'c R, &'c DefaultMessageRouter,
IgnoringMessageHandler, IgnoringMessageHandler,
IgnoringMessageHandler IgnoringMessageHandler
>; >;