Skip to content

Commit e1b58a8

Browse files
authored
Merge pull request #1960 from tnull/2023-01-deref-router-in-invoicepayer
Make `InvoicePayer`'s `Router` `Deref`
2 parents 31b0a13 + bc8e1e5 commit e1b58a8

File tree

2 files changed

+36
-32
lines changed

2 files changed

+36
-32
lines changed

lightning-background-processor/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1133,7 +1133,7 @@ mod tests {
11331133
// Initiate the background processors to watch each node.
11341134
let data_dir = nodes[0].persister.get_data_dir();
11351135
let persister = Arc::new(Persister::new(data_dir));
1136-
let router = DefaultRouter::new(Arc::clone(&nodes[0].network_graph), Arc::clone(&nodes[0].logger), random_seed_bytes, Arc::clone(&nodes[0].scorer));
1136+
let router = Arc::new(DefaultRouter::new(Arc::clone(&nodes[0].network_graph), Arc::clone(&nodes[0].logger), random_seed_bytes, Arc::clone(&nodes[0].scorer)));
11371137
let invoice_payer = Arc::new(InvoicePayer::new(Arc::clone(&nodes[0].node), router, Arc::clone(&nodes[0].logger), |_: _| {}, Retry::Attempts(2)));
11381138
let event_handler = Arc::clone(&invoice_payer);
11391139
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].no_gossip_sync(), nodes[0].peer_manager.clone(), nodes[0].logger.clone(), Some(nodes[0].scorer.clone()));

lightning-invoice/src/payment.rs

+35-31
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@
115115
//! # let router = FakeRouter {};
116116
//! # let scorer = RefCell::new(FakeScorer {});
117117
//! # let logger = FakeLogger {};
118-
//! let invoice_payer = InvoicePayer::new(&payer, router, &logger, event_handler, Retry::Attempts(2));
118+
//! let invoice_payer = InvoicePayer::new(&payer, &router, &logger, event_handler, Retry::Attempts(2));
119119
//!
120120
//! let invoice = "...";
121121
//! if let Ok(invoice) = invoice.parse::<Invoice>() {
@@ -184,12 +184,13 @@ mod sealed {
184184
/// (C-not exported) generally all users should use the [`InvoicePayer`] type alias.
185185
pub struct InvoicePayerUsingTime<
186186
P: Deref,
187-
R: Router,
187+
R: Deref,
188188
L: Deref,
189189
E: sealed::BaseEventHandler,
190190
T: Time
191191
> where
192192
P::Target: Payer,
193+
R::Target: Router,
193194
L::Target: Logger,
194195
{
195196
payer: P,
@@ -316,10 +317,11 @@ pub enum PaymentError {
316317
Sending(PaymentSendFailure),
317318
}
318319

319-
impl<P: Deref, R: Router, L: Deref, E: sealed::BaseEventHandler, T: Time>
320+
impl<P: Deref, R: Deref, L: Deref, E: sealed::BaseEventHandler, T: Time>
320321
InvoicePayerUsingTime<P, R, L, E, T>
321322
where
322323
P::Target: Payer,
324+
R::Target: Router,
323325
L::Target: Logger,
324326
{
325327
/// Creates an invoice payer that retries failed payment paths.
@@ -630,10 +632,11 @@ fn has_expired(route_params: &RouteParameters) -> bool {
630632
} else { false }
631633
}
632634

633-
impl<P: Deref, R: Router, L: Deref, E: sealed::BaseEventHandler, T: Time>
635+
impl<P: Deref, R: Deref, L: Deref, E: sealed::BaseEventHandler, T: Time>
634636
InvoicePayerUsingTime<P, R, L, E, T>
635637
where
636638
P::Target: Payer,
639+
R::Target: Router,
637640
L::Target: Logger,
638641
{
639642
/// Returns a bool indicating whether the processed event should be forwarded to a user-provided
@@ -697,10 +700,11 @@ where
697700
}
698701
}
699702

700-
impl<P: Deref, R: Router, L: Deref, E: EventHandler, T: Time>
703+
impl<P: Deref, R: Deref, L: Deref, E: EventHandler, T: Time>
701704
EventHandler for InvoicePayerUsingTime<P, R, L, E, T>
702705
where
703706
P::Target: Payer,
707+
R::Target: Router,
704708
L::Target: Logger,
705709
{
706710
fn handle_event(&self, event: Event) {
@@ -711,10 +715,11 @@ where
711715
}
712716
}
713717

714-
impl<P: Deref, R: Router, L: Deref, T: Time, F: Future, H: Fn(Event) -> F>
718+
impl<P: Deref, R: Deref, L: Deref, T: Time, F: Future, H: Fn(Event) -> F>
715719
InvoicePayerUsingTime<P, R, L, H, T>
716720
where
717721
P::Target: Payer,
722+
R::Target: Router,
718723
L::Target: Logger,
719724
{
720725
/// Intercepts events required by the [`InvoicePayer`] and forwards them to the underlying event
@@ -746,7 +751,6 @@ mod tests {
746751
use secp256k1::{SecretKey, PublicKey, Secp256k1};
747752
use std::cell::RefCell;
748753
use std::collections::VecDeque;
749-
use std::ops::DerefMut;
750754
use std::time::{SystemTime, Duration};
751755
use crate::time_utils::tests::SinceEpoch;
752756
use crate::DEFAULT_EXPIRY_TIME;
@@ -831,7 +835,7 @@ mod tests {
831835
let router = TestRouter::new(TestScorer::new());
832836
let logger = TestLogger::new();
833837
let invoice_payer =
834-
InvoicePayer::new(&payer, router, &logger, event_handler, Retry::Attempts(0));
838+
InvoicePayer::new(&payer, &router, &logger, event_handler, Retry::Attempts(0));
835839

836840
let payment_id = Some(invoice_payer.pay_invoice(&invoice).unwrap());
837841
assert_eq!(*payer.attempts.borrow(), 1);
@@ -859,7 +863,7 @@ mod tests {
859863
let router = TestRouter::new(TestScorer::new());
860864
let logger = TestLogger::new();
861865
let invoice_payer =
862-
InvoicePayer::new(&payer, router, &logger, event_handler, Retry::Attempts(2));
866+
InvoicePayer::new(&payer, &router, &logger, event_handler, Retry::Attempts(2));
863867

864868
let payment_id = Some(invoice_payer.pay_invoice(&invoice).unwrap());
865869
assert_eq!(*payer.attempts.borrow(), 1);
@@ -903,7 +907,7 @@ mod tests {
903907
let router = TestRouter::new(TestScorer::new());
904908
let logger = TestLogger::new();
905909
let invoice_payer =
906-
InvoicePayer::new(&payer, router, &logger, event_handler, Retry::Attempts(2));
910+
InvoicePayer::new(&payer, &router, &logger, event_handler, Retry::Attempts(2));
907911

908912
assert!(invoice_payer.pay_invoice(&invoice).is_ok());
909913
}
@@ -924,7 +928,7 @@ mod tests {
924928
let router = TestRouter::new(TestScorer::new());
925929
let logger = TestLogger::new();
926930
let invoice_payer =
927-
InvoicePayer::new(&payer, router, &logger, event_handler, Retry::Attempts(2));
931+
InvoicePayer::new(&payer, &router, &logger, event_handler, Retry::Attempts(2));
928932

929933
let payment_id = Some(PaymentId([1; 32]));
930934
let event = Event::PaymentPathFailed {
@@ -968,7 +972,7 @@ mod tests {
968972
let router = TestRouter::new(TestScorer::new());
969973
let logger = TestLogger::new();
970974
let invoice_payer =
971-
InvoicePayer::new(&payer, router, &logger, event_handler, Retry::Attempts(2));
975+
InvoicePayer::new(&payer, &router, &logger, event_handler, Retry::Attempts(2));
972976

973977
let payment_id = Some(invoice_payer.pay_invoice(&invoice).unwrap());
974978
assert_eq!(*payer.attempts.borrow(), 1);
@@ -1027,7 +1031,7 @@ mod tests {
10271031
type InvoicePayerUsingSinceEpoch <P, R, L, E> = InvoicePayerUsingTime::<P, R, L, E, SinceEpoch>;
10281032

10291033
let invoice_payer =
1030-
InvoicePayerUsingSinceEpoch::new(&payer, router, &logger, event_handler, Retry::Timeout(Duration::from_secs(120)));
1034+
InvoicePayerUsingSinceEpoch::new(&payer, &router, &logger, event_handler, Retry::Timeout(Duration::from_secs(120)));
10311035

10321036
let payment_id = Some(invoice_payer.pay_invoice(&invoice).unwrap());
10331037
assert_eq!(*payer.attempts.borrow(), 1);
@@ -1066,7 +1070,7 @@ mod tests {
10661070
let router = TestRouter::new(TestScorer::new());
10671071
let logger = TestLogger::new();
10681072
let invoice_payer =
1069-
InvoicePayer::new(&payer, router, &logger, event_handler, Retry::Attempts(2));
1073+
InvoicePayer::new(&payer, &router, &logger, event_handler, Retry::Attempts(2));
10701074

10711075
let payment_id = Some(invoice_payer.pay_invoice(&invoice).unwrap());
10721076
assert_eq!(*payer.attempts.borrow(), 1);
@@ -1097,7 +1101,7 @@ mod tests {
10971101
let router = TestRouter::new(TestScorer::new());
10981102
let logger = TestLogger::new();
10991103
let invoice_payer =
1100-
InvoicePayer::new(&payer, router, &logger, event_handler, Retry::Attempts(2));
1104+
InvoicePayer::new(&payer, &router, &logger, event_handler, Retry::Attempts(2));
11011105

11021106
let payment_preimage = PaymentPreimage([1; 32]);
11031107
let invoice = expired_invoice(payment_preimage);
@@ -1121,7 +1125,7 @@ mod tests {
11211125
let router = TestRouter::new(TestScorer::new());
11221126
let logger = TestLogger::new();
11231127
let invoice_payer =
1124-
InvoicePayer::new(&payer, router, &logger, event_handler, Retry::Attempts(2));
1128+
InvoicePayer::new(&payer, &router, &logger, event_handler, Retry::Attempts(2));
11251129

11261130
let payment_id = Some(invoice_payer.pay_invoice(&invoice).unwrap());
11271131
assert_eq!(*payer.attempts.borrow(), 1);
@@ -1161,7 +1165,7 @@ mod tests {
11611165
let router = TestRouter::new(TestScorer::new());
11621166
let logger = TestLogger::new();
11631167
let invoice_payer =
1164-
InvoicePayer::new(&payer, router, &logger, event_handler, Retry::Attempts(2));
1168+
InvoicePayer::new(&payer, &router, &logger, event_handler, Retry::Attempts(2));
11651169

11661170
let payment_id = Some(invoice_payer.pay_invoice(&invoice).unwrap());
11671171
assert_eq!(*payer.attempts.borrow(), 1);
@@ -1194,7 +1198,7 @@ mod tests {
11941198
let router = TestRouter::new(TestScorer::new());
11951199
let logger = TestLogger::new();
11961200
let invoice_payer =
1197-
InvoicePayer::new(&payer, router, &logger, event_handler, Retry::Attempts(2));
1201+
InvoicePayer::new(&payer, &router, &logger, event_handler, Retry::Attempts(2));
11981202

11991203
let payment_id = Some(invoice_payer.pay_invoice(&invoice).unwrap());
12001204
assert_eq!(*payer.attempts.borrow(), 1);
@@ -1229,7 +1233,7 @@ mod tests {
12291233
let router = TestRouter::new(TestScorer::new());
12301234
let logger = TestLogger::new();
12311235
let invoice_payer =
1232-
InvoicePayer::new(&payer, router, &logger, event_handler, Retry::Attempts(0));
1236+
InvoicePayer::new(&payer, &router, &logger, event_handler, Retry::Attempts(0));
12331237

12341238
let payment_id = Some(invoice_payer.pay_invoice(&invoice).unwrap());
12351239

@@ -1267,7 +1271,7 @@ mod tests {
12671271
let router = FailingRouter {};
12681272
let logger = TestLogger::new();
12691273
let invoice_payer =
1270-
InvoicePayer::new(&payer, router, &logger, |_: Event| {}, Retry::Attempts(0));
1274+
InvoicePayer::new(&payer, &router, &logger, |_: Event| {}, Retry::Attempts(0));
12711275

12721276
let payment_preimage = PaymentPreimage([1; 32]);
12731277
let invoice = invoice(payment_preimage);
@@ -1290,7 +1294,7 @@ mod tests {
12901294
let router = TestRouter::new(TestScorer::new());
12911295
let logger = TestLogger::new();
12921296
let invoice_payer =
1293-
InvoicePayer::new(&payer, router, &logger, |_: Event| {}, Retry::Attempts(0));
1297+
InvoicePayer::new(&payer, &router, &logger, |_: Event| {}, Retry::Attempts(0));
12941298

12951299
match invoice_payer.pay_invoice(&invoice) {
12961300
Err(PaymentError::Sending(_)) => {},
@@ -1313,7 +1317,7 @@ mod tests {
13131317
let router = TestRouter::new(TestScorer::new());
13141318
let logger = TestLogger::new();
13151319
let invoice_payer =
1316-
InvoicePayer::new(&payer, router, &logger, event_handler, Retry::Attempts(0));
1320+
InvoicePayer::new(&payer, &router, &logger, event_handler, Retry::Attempts(0));
13171321

13181322
let payment_id =
13191323
Some(invoice_payer.pay_zero_value_invoice(&invoice, final_value_msat).unwrap());
@@ -1335,7 +1339,7 @@ mod tests {
13351339
let router = TestRouter::new(TestScorer::new());
13361340
let logger = TestLogger::new();
13371341
let invoice_payer =
1338-
InvoicePayer::new(&payer, router, &logger, event_handler, Retry::Attempts(0));
1342+
InvoicePayer::new(&payer, &router, &logger, event_handler, Retry::Attempts(0));
13391343

13401344
let payment_preimage = PaymentPreimage([1; 32]);
13411345
let invoice = invoice(payment_preimage);
@@ -1365,7 +1369,7 @@ mod tests {
13651369
let router = TestRouter::new(TestScorer::new());
13661370
let logger = TestLogger::new();
13671371
let invoice_payer =
1368-
InvoicePayer::new(&payer, router, &logger, event_handler, Retry::Attempts(2));
1372+
InvoicePayer::new(&payer, &router, &logger, event_handler, Retry::Attempts(2));
13691373

13701374
let payment_id = Some(invoice_payer.pay_pubkey(
13711375
pubkey, payment_preimage, final_value_msat, final_cltv_expiry_delta
@@ -1420,7 +1424,7 @@ mod tests {
14201424
let router = TestRouter::new(scorer);
14211425
let logger = TestLogger::new();
14221426
let invoice_payer =
1423-
InvoicePayer::new(&payer, router, &logger, event_handler, Retry::Attempts(2));
1427+
InvoicePayer::new(&payer, &router, &logger, event_handler, Retry::Attempts(2));
14241428

14251429
let payment_id = Some(invoice_payer.pay_invoice(&invoice).unwrap());
14261430
let event = Event::PaymentPathFailed {
@@ -1455,7 +1459,7 @@ mod tests {
14551459
let router = TestRouter::new(scorer);
14561460
let logger = TestLogger::new();
14571461
let invoice_payer =
1458-
InvoicePayer::new(&payer, router, &logger, event_handler, Retry::Attempts(2));
1462+
InvoicePayer::new(&payer, &router, &logger, event_handler, Retry::Attempts(2));
14591463

14601464
let payment_id = invoice_payer.pay_invoice(&invoice).unwrap();
14611465
let event = Event::PaymentPathSuccessful {
@@ -1498,7 +1502,7 @@ mod tests {
14981502
let router = TestRouter::new(scorer);
14991503
let logger = TestLogger::new();
15001504
let invoice_payer =
1501-
InvoicePayer::new(&payer, router, &logger, event_handler, Retry::Attempts(0));
1505+
InvoicePayer::new(&payer, &router, &logger, event_handler, Retry::Attempts(0));
15021506

15031507
// Make first invoice payment.
15041508
invoice_payer.pay_invoice(&payment_invoice).unwrap();
@@ -1552,7 +1556,7 @@ mod tests {
15521556
let router = TestRouter::new(scorer);
15531557
let logger = TestLogger::new();
15541558
let invoice_payer =
1555-
InvoicePayer::new(&payer, router, &logger, event_handler, Retry::Attempts(2));
1559+
InvoicePayer::new(&payer, &router, &logger, event_handler, Retry::Attempts(2));
15561560

15571561
// Fail 1st path, leave 2nd path inflight
15581562
let payment_id = Some(invoice_payer.pay_invoice(&payment_invoice).unwrap());
@@ -2077,7 +2081,7 @@ mod tests {
20772081
router.expect_find_route(Ok(route.clone()));
20782082

20792083
let event_handler = |_: Event| { panic!(); };
2080-
let invoice_payer = InvoicePayer::new(nodes[0].node, router, nodes[0].logger, event_handler, Retry::Attempts(1));
2084+
let invoice_payer = InvoicePayer::new(nodes[0].node, &router, nodes[0].logger, event_handler, Retry::Attempts(1));
20812085

20822086
assert!(invoice_payer.pay_invoice(&create_invoice_from_channelmanager_and_duration_since_epoch(
20832087
&nodes[1].node, nodes[1].keys_manager, nodes[1].logger, Currency::Bitcoin,
@@ -2122,7 +2126,7 @@ mod tests {
21222126
router.expect_find_route(Ok(route.clone()));
21232127

21242128
let event_handler = |_: Event| { panic!(); };
2125-
let invoice_payer = InvoicePayer::new(nodes[0].node, router, nodes[0].logger, event_handler, Retry::Attempts(1));
2129+
let invoice_payer = InvoicePayer::new(nodes[0].node, &router, nodes[0].logger, event_handler, Retry::Attempts(1));
21262130

21272131
assert!(invoice_payer.pay_invoice(&create_invoice_from_channelmanager_and_duration_since_epoch(
21282132
&nodes[1].node, nodes[1].keys_manager, nodes[1].logger, Currency::Bitcoin,
@@ -2203,7 +2207,7 @@ mod tests {
22032207
let event_checker = expected_events.borrow_mut().pop_front().unwrap();
22042208
event_checker(event);
22052209
};
2206-
let invoice_payer = InvoicePayer::new(nodes[0].node, router, nodes[0].logger, event_handler, Retry::Attempts(1));
2210+
let invoice_payer = InvoicePayer::new(nodes[0].node, &router, nodes[0].logger, event_handler, Retry::Attempts(1));
22072211

22082212
assert!(invoice_payer.pay_invoice(&create_invoice_from_channelmanager_and_duration_since_epoch(
22092213
&nodes[1].node, nodes[1].keys_manager, nodes[1].logger, Currency::Bitcoin,

0 commit comments

Comments
 (0)