Skip to content

Commit ad7aaa5

Browse files
Drop Deref indirection for MessageRouter
Reduces generics and verbosity across the codebase, should provide equivalent behavior.
1 parent 6509e29 commit ad7aaa5

File tree

6 files changed

+59
-80
lines changed

6 files changed

+59
-80
lines changed

lightning-background-processor/src/lib.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -426,8 +426,7 @@ pub const NO_ONION_MESSENGER: Option<
426426
L = &'static (dyn Logger + Send + Sync),
427427
NodeIdLookUp = DynChannelManager,
428428
NL = &'static DynChannelManager,
429-
MessageRouter = DynMessageRouter,
430-
MR = &'static DynMessageRouter,
429+
MessageRouter = &'static DynMessageRouter,
431430
OffersMessageHandler = lightning::ln::peer_handler::IgnoringMessageHandler,
432431
OMH = &'static lightning::ln::peer_handler::IgnoringMessageHandler,
433432
AsyncPaymentsMessageHandler = lightning::ln::peer_handler::IgnoringMessageHandler,

lightning-dns-resolver/src/lib.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -242,12 +242,6 @@ mod test {
242242
)])
243243
}
244244
}
245-
impl Deref for DirectlyConnectedRouter {
246-
type Target = DirectlyConnectedRouter;
247-
fn deref(&self) -> &DirectlyConnectedRouter {
248-
self
249-
}
250-
}
251245

252246
struct URIResolver {
253247
resolved_uri: Mutex<Option<(HumanReadableName, PaymentId, String)>>,

lightning/src/ln/channelmanager.rs

Lines changed: 22 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1792,9 +1792,7 @@ pub trait AChannelManager {
17921792
/// A type implementing [`Router`].
17931793
type Router: Router;
17941794
/// A type implementing [`MessageRouter`].
1795-
type MessageRouter: MessageRouter + ?Sized;
1796-
/// A type that may be dereferenced to [`Self::MessageRouter`].
1797-
type MR: Deref<Target = Self::MessageRouter>;
1795+
type MessageRouter: MessageRouter;
17981796
/// A type implementing [`Logger`].
17991797
type Logger: Logger + ?Sized;
18001798
/// A type that may be dereferenced to [`Self::Logger`].
@@ -1810,7 +1808,7 @@ pub trait AChannelManager {
18101808
Self::SP,
18111809
Self::FeeEstimator,
18121810
Self::Router,
1813-
Self::MR,
1811+
Self::MessageRouter,
18141812
Self::L,
18151813
>;
18161814
}
@@ -1823,13 +1821,12 @@ impl<
18231821
SP: Deref,
18241822
F: FeeEstimator,
18251823
R: Router,
1826-
MR: Deref,
1824+
MR: MessageRouter,
18271825
L: Deref,
18281826
> AChannelManager for ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
18291827
where
18301828
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
18311829
SP::Target: SignerProvider,
1832-
MR::Target: MessageRouter,
18331830
L::Target: Logger,
18341831
{
18351832
type Watch = M::Target;
@@ -1842,8 +1839,7 @@ where
18421839
type SP = SP;
18431840
type FeeEstimator = F;
18441841
type Router = R;
1845-
type MessageRouter = MR::Target;
1846-
type MR = MR;
1842+
type MessageRouter = MR;
18471843
type Logger = L::Target;
18481844
type L = L;
18491845
fn get_cm(&self) -> &ChannelManager<M, T, ES, NS, SP, F, R, MR, L> {
@@ -2638,12 +2634,11 @@ pub struct ChannelManager<
26382634
SP: Deref,
26392635
F: FeeEstimator,
26402636
R: Router,
2641-
MR: Deref,
2637+
MR: MessageRouter,
26422638
L: Deref,
26432639
> where
26442640
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
26452641
SP::Target: SignerProvider,
2646-
MR::Target: MessageRouter,
26472642
L::Target: Logger,
26482643
{
26492644
config: RwLock<UserConfig>,
@@ -3709,13 +3704,12 @@ impl<
37093704
SP: Deref,
37103705
F: FeeEstimator,
37113706
R: Router,
3712-
MR: Deref,
3707+
MR: MessageRouter,
37133708
L: Deref,
37143709
> ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
37153710
where
37163711
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
37173712
SP::Target: SignerProvider,
3718-
MR::Target: MessageRouter,
37193713
L::Target: Logger,
37203714
{
37213715
/// Constructs a new `ChannelManager` to hold several channels and route between them.
@@ -13179,13 +13173,12 @@ impl<
1317913173
SP: Deref,
1318013174
F: FeeEstimator,
1318113175
R: Router,
13182-
MR: Deref,
13176+
MR: MessageRouter,
1318313177
L: Deref,
1318413178
> ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
1318513179
where
1318613180
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
1318713181
SP::Target: SignerProvider,
13188-
MR::Target: MessageRouter,
1318913182
L::Target: Logger,
1319013183
{
1319113184
#[cfg(not(c_bindings))]
@@ -14026,13 +14019,12 @@ impl<
1402614019
SP: Deref,
1402714020
F: FeeEstimator,
1402814021
R: Router,
14029-
MR: Deref,
14022+
MR: MessageRouter,
1403014023
L: Deref,
1403114024
> BaseMessageHandler for ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
1403214025
where
1403314026
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
1403414027
SP::Target: SignerProvider,
14035-
MR::Target: MessageRouter,
1403614028
L::Target: Logger,
1403714029
{
1403814030
fn provided_node_features(&self) -> NodeFeatures {
@@ -14379,13 +14371,12 @@ impl<
1437914371
SP: Deref,
1438014372
F: FeeEstimator,
1438114373
R: Router,
14382-
MR: Deref,
14374+
MR: MessageRouter,
1438314375
L: Deref,
1438414376
> EventsProvider for ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
1438514377
where
1438614378
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
1438714379
SP::Target: SignerProvider,
14388-
MR::Target: MessageRouter,
1438914380
L::Target: Logger,
1439014381
{
1439114382
/// Processes events that must be periodically handled.
@@ -14409,13 +14400,12 @@ impl<
1440914400
SP: Deref,
1441014401
F: FeeEstimator,
1441114402
R: Router,
14412-
MR: Deref,
14403+
MR: MessageRouter,
1441314404
L: Deref,
1441414405
> chain::Listen for ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
1441514406
where
1441614407
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
1441714408
SP::Target: SignerProvider,
14418-
MR::Target: MessageRouter,
1441914409
L::Target: Logger,
1442014410
{
1442114411
fn filtered_block_connected(&self, header: &Header, txdata: &TransactionData, height: u32) {
@@ -14465,13 +14455,12 @@ impl<
1446514455
SP: Deref,
1446614456
F: FeeEstimator,
1446714457
R: Router,
14468-
MR: Deref,
14458+
MR: MessageRouter,
1446914459
L: Deref,
1447014460
> chain::Confirm for ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
1447114461
where
1447214462
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
1447314463
SP::Target: SignerProvider,
14474-
MR::Target: MessageRouter,
1447514464
L::Target: Logger,
1447614465
{
1447714466
#[rustfmt::skip]
@@ -14633,13 +14622,12 @@ impl<
1463314622
SP: Deref,
1463414623
F: FeeEstimator,
1463514624
R: Router,
14636-
MR: Deref,
14625+
MR: MessageRouter,
1463714626
L: Deref,
1463814627
> ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
1463914628
where
1464014629
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
1464114630
SP::Target: SignerProvider,
14642-
MR::Target: MessageRouter,
1464314631
L::Target: Logger,
1464414632
{
1464514633
/// Calls a function which handles an on-chain event (blocks dis/connected, transactions
@@ -14990,13 +14978,12 @@ impl<
1499014978
SP: Deref,
1499114979
F: FeeEstimator,
1499214980
R: Router,
14993-
MR: Deref,
14981+
MR: MessageRouter,
1499414982
L: Deref,
1499514983
> ChannelMessageHandler for ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
1499614984
where
1499714985
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
1499814986
SP::Target: SignerProvider,
14999-
MR::Target: MessageRouter,
1500014987
L::Target: Logger,
1500114988
{
1500214989
fn handle_open_channel(&self, counterparty_node_id: PublicKey, message: &msgs::OpenChannel) {
@@ -15560,13 +15547,12 @@ impl<
1556015547
SP: Deref,
1556115548
F: FeeEstimator,
1556215549
R: Router,
15563-
MR: Deref,
15550+
MR: MessageRouter,
1556415551
L: Deref,
1556515552
> OffersMessageHandler for ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
1556615553
where
1556715554
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
1556815555
SP::Target: SignerProvider,
15569-
MR::Target: MessageRouter,
1557015556
L::Target: Logger,
1557115557
{
1557215558
#[rustfmt::skip]
@@ -15773,13 +15759,12 @@ impl<
1577315759
SP: Deref,
1577415760
F: FeeEstimator,
1577515761
R: Router,
15776-
MR: Deref,
15762+
MR: MessageRouter,
1577715763
L: Deref,
1577815764
> AsyncPaymentsMessageHandler for ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
1577915765
where
1578015766
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
1578115767
SP::Target: SignerProvider,
15782-
MR::Target: MessageRouter,
1578315768
L::Target: Logger,
1578415769
{
1578515770
fn handle_offer_paths_request(
@@ -15970,13 +15955,12 @@ impl<
1597015955
SP: Deref,
1597115956
F: FeeEstimator,
1597215957
R: Router,
15973-
MR: Deref,
15958+
MR: MessageRouter,
1597415959
L: Deref,
1597515960
> DNSResolverMessageHandler for ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
1597615961
where
1597715962
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
1597815963
SP::Target: SignerProvider,
15979-
MR::Target: MessageRouter,
1598015964
L::Target: Logger,
1598115965
{
1598215966
fn handle_dnssec_query(
@@ -16033,13 +16017,12 @@ impl<
1603316017
SP: Deref,
1603416018
F: FeeEstimator,
1603516019
R: Router,
16036-
MR: Deref,
16020+
MR: MessageRouter,
1603716021
L: Deref,
1603816022
> NodeIdLookUp for ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
1603916023
where
1604016024
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
1604116025
SP::Target: SignerProvider,
16042-
MR::Target: MessageRouter,
1604316026
L::Target: Logger,
1604416027
{
1604516028
fn next_node_id(&self, short_channel_id: u64) -> Option<PublicKey> {
@@ -16544,13 +16527,12 @@ impl<
1654416527
SP: Deref,
1654516528
F: FeeEstimator,
1654616529
R: Router,
16547-
MR: Deref,
16530+
MR: MessageRouter,
1654816531
L: Deref,
1654916532
> Writeable for ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
1655016533
where
1655116534
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
1655216535
SP::Target: SignerProvider,
16553-
MR::Target: MessageRouter,
1655416536
L::Target: Logger,
1655516537
{
1655616538
#[rustfmt::skip]
@@ -16906,12 +16888,11 @@ pub struct ChannelManagerReadArgs<
1690616888
SP: Deref,
1690716889
F: FeeEstimator,
1690816890
R: Router,
16909-
MR: Deref,
16891+
MR: MessageRouter,
1691016892
L: Deref + Clone,
1691116893
> where
1691216894
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
1691316895
SP::Target: SignerProvider,
16914-
MR::Target: MessageRouter,
1691516896
L::Target: Logger,
1691616897
{
1691716898
/// A cryptographically secure source of entropy.
@@ -16981,13 +16962,12 @@ impl<
1698116962
SP: Deref,
1698216963
F: FeeEstimator,
1698316964
R: Router,
16984-
MR: Deref,
16965+
MR: MessageRouter,
1698516966
L: Deref + Clone,
1698616967
> ChannelManagerReadArgs<'a, M, T, ES, NS, SP, F, R, MR, L>
1698716968
where
1698816969
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
1698916970
SP::Target: SignerProvider,
16990-
MR::Target: MessageRouter,
1699116971
L::Target: Logger,
1699216972
{
1699316973
/// Simple utility function to create a ChannelManagerReadArgs which creates the monitor
@@ -17064,14 +17044,13 @@ impl<
1706417044
SP: Deref,
1706517045
F: FeeEstimator,
1706617046
R: Router,
17067-
MR: Deref,
17047+
MR: MessageRouter,
1706817048
L: Deref + Clone,
1706917049
> ReadableArgs<ChannelManagerReadArgs<'a, M, T, ES, NS, SP, F, R, MR, L>>
1707017050
for (BlockHash, Arc<ChannelManager<M, T, ES, NS, SP, F, R, MR, L>>)
1707117051
where
1707217052
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
1707317053
SP::Target: SignerProvider,
17074-
MR::Target: MessageRouter,
1707517054
L::Target: Logger,
1707617055
{
1707717056
fn read<Reader: io::Read>(
@@ -17092,14 +17071,13 @@ impl<
1709217071
SP: Deref,
1709317072
F: FeeEstimator,
1709417073
R: Router,
17095-
MR: Deref,
17074+
MR: MessageRouter,
1709617075
L: Deref + Clone,
1709717076
> ReadableArgs<ChannelManagerReadArgs<'a, M, T, ES, NS, SP, F, R, MR, L>>
1709817077
for (BlockHash, ChannelManager<M, T, ES, NS, SP, F, R, MR, L>)
1709917078
where
1710017079
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
1710117080
SP::Target: SignerProvider,
17102-
MR::Target: MessageRouter,
1710317081
L::Target: Logger,
1710417082
{
1710517083
fn read<Reader: io::Read>(

lightning/src/ln/functional_test_utils.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -738,7 +738,7 @@ pub trait NodeHolder {
738738
<Self::CM as AChannelManager>::SP,
739739
<Self::CM as AChannelManager>::FeeEstimator,
740740
<Self::CM as AChannelManager>::Router,
741-
<Self::CM as AChannelManager>::MR,
741+
<Self::CM as AChannelManager>::MessageRouter,
742742
<Self::CM as AChannelManager>::L,
743743
>;
744744
fn chain_monitor(&self) -> Option<&test_utils::TestChainMonitor<'_>>;
@@ -755,7 +755,7 @@ impl<H: NodeHolder> NodeHolder for &H {
755755
<Self::CM as AChannelManager>::SP,
756756
<Self::CM as AChannelManager>::FeeEstimator,
757757
<Self::CM as AChannelManager>::Router,
758-
<Self::CM as AChannelManager>::MR,
758+
<Self::CM as AChannelManager>::MessageRouter,
759759
<Self::CM as AChannelManager>::L,
760760
> {
761761
(*self).node()

lightning/src/offers/flow.rs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,8 @@ use {
7474
///
7575
/// [`OffersMessageFlow`] is parameterized by a [`MessageRouter`], which is responsible
7676
/// for finding message paths when initiating and retrying onion messages.
77-
pub struct OffersMessageFlow<MR: Deref, L: Deref>
77+
pub struct OffersMessageFlow<MR: MessageRouter, L: Deref>
7878
where
79-
MR::Target: MessageRouter,
8079
L::Target: Logger,
8180
{
8281
chain_hash: ChainHash,
@@ -107,9 +106,8 @@ where
107106
logger: L,
108107
}
109108

110-
impl<MR: Deref, L: Deref> OffersMessageFlow<MR, L>
109+
impl<MR: MessageRouter, L: Deref> OffersMessageFlow<MR, L>
111110
where
112-
MR::Target: MessageRouter,
113111
L::Target: Logger,
114112
{
115113
/// Creates a new [`OffersMessageFlow`]
@@ -266,9 +264,8 @@ const DEFAULT_ASYNC_RECEIVE_OFFER_EXPIRY: Duration = Duration::from_secs(365 * 2
266264
pub(crate) const TEST_DEFAULT_ASYNC_RECEIVE_OFFER_EXPIRY: Duration =
267265
DEFAULT_ASYNC_RECEIVE_OFFER_EXPIRY;
268266

269-
impl<MR: Deref, L: Deref> OffersMessageFlow<MR, L>
267+
impl<MR: MessageRouter, L: Deref> OffersMessageFlow<MR, L>
270268
where
271-
MR::Target: MessageRouter,
272269
L::Target: Logger,
273270
{
274271
/// [`BlindedMessagePath`]s for an async recipient to communicate with this node and interactively
@@ -430,9 +427,8 @@ pub enum HeldHtlcReplyPath {
430427
},
431428
}
432429

433-
impl<MR: Deref, L: Deref> OffersMessageFlow<MR, L>
430+
impl<MR: MessageRouter, L: Deref> OffersMessageFlow<MR, L>
434431
where
435-
MR::Target: MessageRouter,
436432
L::Target: Logger,
437433
{
438434
/// Verifies an [`InvoiceRequest`] using the provided [`OffersContext`] or the [`InvoiceRequest::metadata`].

0 commit comments

Comments
 (0)