Skip to content

Commit f79d486

Browse files
committed
Add payment_id to Payment{Successful,Failed,Received} events
1 parent 6328fb6 commit f79d486

File tree

4 files changed

+40
-13
lines changed

4 files changed

+40
-13
lines changed

bindings/ldk_node.udl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -186,9 +186,9 @@ enum BuildError {
186186

187187
[Enum]
188188
interface Event {
189-
PaymentSuccessful(PaymentHash payment_hash, u64? fee_paid_msat);
190-
PaymentFailed(PaymentHash payment_hash, PaymentFailureReason? reason);
191-
PaymentReceived(PaymentHash payment_hash, u64 amount_msat);
189+
PaymentSuccessful(PaymentId? payment_id, PaymentHash payment_hash, u64? fee_paid_msat);
190+
PaymentFailed(PaymentId? payment_id, PaymentHash payment_hash, PaymentFailureReason? reason);
191+
PaymentReceived(PaymentId? payment_id, PaymentHash payment_hash, u64 amount_msat);
192192
ChannelPending(ChannelId channel_id, UserChannelId user_channel_id, ChannelId former_temporary_channel_id, PublicKey counterparty_node_id, OutPoint funding_txo);
193193
ChannelReady(ChannelId channel_id, UserChannelId user_channel_id, PublicKey? counterparty_node_id);
194194
ChannelClosed(ChannelId channel_id, UserChannelId user_channel_id, PublicKey? counterparty_node_id, ClosureReason? reason);

src/event.rs

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,21 @@ use std::time::Duration;
4646
pub enum Event {
4747
/// A sent payment was successful.
4848
PaymentSuccessful {
49+
/// A local identifier used to track the payment.
50+
///
51+
/// Will only be `None` for events serialized with LDK Node v0.2.1 or prior.
52+
payment_id: Option<PaymentId>,
4953
/// The hash of the payment.
5054
payment_hash: PaymentHash,
5155
/// The total fee which was spent at intermediate hops in this payment.
5256
fee_paid_msat: Option<u64>,
5357
},
5458
/// A sent payment has failed.
5559
PaymentFailed {
60+
/// A local identifier used to track the payment.
61+
///
62+
/// Will only be `None` for events serialized with LDK Node v0.2.1 or prior.
63+
payment_id: Option<PaymentId>,
5664
/// The hash of the payment.
5765
payment_hash: PaymentHash,
5866
/// The reason why the payment failed.
@@ -62,6 +70,10 @@ pub enum Event {
6270
},
6371
/// A payment has been received.
6472
PaymentReceived {
73+
/// A local identifier used to track the payment.
74+
///
75+
/// Will only be `None` for events serialized with LDK Node v0.2.1 or prior.
76+
payment_id: Option<PaymentId>,
6577
/// The hash of the payment.
6678
payment_hash: PaymentHash,
6779
/// The value, in thousandths of a satoshi, that has been received.
@@ -110,13 +122,16 @@ impl_writeable_tlv_based_enum!(Event,
110122
(0, PaymentSuccessful) => {
111123
(0, payment_hash, required),
112124
(1, fee_paid_msat, option),
125+
(3, payment_id, option),
113126
},
114127
(1, PaymentFailed) => {
115128
(0, payment_hash, required),
116129
(1, reason, option),
130+
(3, payment_id, option),
117131
},
118132
(2, PaymentReceived) => {
119133
(0, payment_hash, required),
134+
(1, payment_id, option),
120135
(2, amount_msat, required),
121136
},
122137
(3, ChannelReady) => {
@@ -636,7 +651,11 @@ where
636651
};
637652

638653
self.event_queue
639-
.add_event(Event::PaymentReceived { payment_hash, amount_msat })
654+
.add_event(Event::PaymentReceived {
655+
payment_id: Some(payment_id),
656+
payment_hash,
657+
amount_msat,
658+
})
640659
.unwrap_or_else(|e| {
641660
log_error!(self.logger, "Failed to push to event queue: {}", e);
642661
panic!("Failed to push to event queue");
@@ -684,7 +703,11 @@ where
684703
});
685704

686705
self.event_queue
687-
.add_event(Event::PaymentSuccessful { payment_hash, fee_paid_msat })
706+
.add_event(Event::PaymentSuccessful {
707+
payment_id: Some(payment_id),
708+
payment_hash,
709+
fee_paid_msat,
710+
})
688711
.unwrap_or_else(|e| {
689712
log_error!(self.logger, "Failed to push to event queue: {}", e);
690713
panic!("Failed to push to event queue");
@@ -707,7 +730,11 @@ where
707730
panic!("Failed to access payment store");
708731
});
709732
self.event_queue
710-
.add_event(Event::PaymentFailed { payment_hash, reason })
733+
.add_event(Event::PaymentFailed {
734+
payment_id: Some(payment_id),
735+
payment_hash,
736+
reason,
737+
})
711738
.unwrap_or_else(|e| {
712739
log_error!(self.logger, "Failed to push to event queue: {}", e);
713740
panic!("Failed to push to event queue");

tests/common/mod.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,11 @@ pub(crate) use expect_channel_ready_event;
8282
macro_rules! expect_payment_received_event {
8383
($node: expr, $amount_msat: expr) => {{
8484
match $node.wait_next_event() {
85-
ref e @ Event::PaymentReceived { payment_hash, amount_msat } => {
85+
ref e @ Event::PaymentReceived { payment_id, amount_msat, .. } => {
8686
println!("{} got event {:?}", $node.node_id(), e);
8787
assert_eq!(amount_msat, $amount_msat);
8888
$node.event_handled();
89-
payment_hash
89+
payment_id
9090
},
9191
ref e => {
9292
panic!("{} got unexpected event!: {:?}", std::stringify!(node_b), e);
@@ -98,12 +98,12 @@ macro_rules! expect_payment_received_event {
9898
pub(crate) use expect_payment_received_event;
9999

100100
macro_rules! expect_payment_successful_event {
101-
($node: expr, $payment_hash: expr, $fee_paid_msat: expr) => {{
101+
($node: expr, $payment_id: expr, $fee_paid_msat: expr) => {{
102102
match $node.wait_next_event() {
103-
ref e @ Event::PaymentSuccessful { payment_hash, fee_paid_msat } => {
103+
ref e @ Event::PaymentSuccessful { payment_id, fee_paid_msat, .. } => {
104104
println!("{} got event {:?}", $node.node_id(), e);
105105
assert_eq!(fee_paid_msat, $fee_paid_msat);
106-
assert_eq!(payment_hash, $payment_hash);
106+
assert_eq!(payment_id, $payment_id);
107107
$node.event_handled();
108108
},
109109
ref e => {

tests/integration_tests_rust.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,9 @@ fn multi_hop_sending() {
136136
let invoice = nodes[4].bolt11_payment().receive(2_500_000, &"asdf", 9217).unwrap();
137137
nodes[0].bolt11_payment().send(&invoice).unwrap();
138138

139-
let payment_hash = expect_payment_received_event!(&nodes[4], 2_500_000);
139+
let payment_id = expect_payment_received_event!(&nodes[4], 2_500_000);
140140
let fee_paid_msat = Some(2000);
141-
expect_payment_successful_event!(nodes[0], payment_hash, fee_paid_msat);
141+
expect_payment_successful_event!(nodes[0], payment_id, fee_paid_msat);
142142
}
143143

144144
#[test]

0 commit comments

Comments
 (0)