Skip to content

Commit 54e94c2

Browse files
committed
Add payment_id to Payment{Successful,Failed,Received} events
1 parent 7a8f948 commit 54e94c2

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) => {
@@ -594,7 +609,11 @@ where
594609
};
595610

596611
self.event_queue
597-
.add_event(Event::PaymentReceived { payment_hash, amount_msat })
612+
.add_event(Event::PaymentReceived {
613+
payment_id: Some(payment_id),
614+
payment_hash,
615+
amount_msat,
616+
})
598617
.unwrap_or_else(|e| {
599618
log_error!(self.logger, "Failed to push to event queue: {}", e);
600619
panic!("Failed to push to event queue");
@@ -642,7 +661,11 @@ where
642661
});
643662

644663
self.event_queue
645-
.add_event(Event::PaymentSuccessful { payment_hash, fee_paid_msat })
664+
.add_event(Event::PaymentSuccessful {
665+
payment_id: Some(payment_id),
666+
payment_hash,
667+
fee_paid_msat,
668+
})
646669
.unwrap_or_else(|e| {
647670
log_error!(self.logger, "Failed to push to event queue: {}", e);
648671
panic!("Failed to push to event queue");
@@ -665,7 +688,11 @@ where
665688
panic!("Failed to access payment store");
666689
});
667690
self.event_queue
668-
.add_event(Event::PaymentFailed { payment_hash, reason })
691+
.add_event(Event::PaymentFailed {
692+
payment_id: Some(payment_id),
693+
payment_hash,
694+
reason,
695+
})
669696
.unwrap_or_else(|e| {
670697
log_error!(self.logger, "Failed to push to event queue: {}", e);
671698
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)