Skip to content

Commit fb52b66

Browse files
committed
Add PaymentReceived, ChannelClosed events
1 parent d4b41e6 commit fb52b66

File tree

1 file changed

+77
-13
lines changed

1 file changed

+77
-13
lines changed

src/event.rs

+77-13
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ use std::time::Duration;
2727
/// The event queue will be persisted under this key.
2828
pub(crate) const EVENTS_PERSISTENCE_KEY: &str = "events";
2929

30-
/// An LdkLiteEvent that should be handled by the user.
30+
/// An event emitted by [`LdkLite`] that should be handled by the user. This will more often than
31+
/// not wrap a LDK event accessible via the `inner` field.
3132
#[derive(Debug, Clone)]
3233
pub enum LdkLiteEvent {
3334
/// A payment we sent was successful.
@@ -44,16 +45,28 @@ pub enum LdkLiteEvent {
4445
/// The wrapped LDK event.
4546
inner: ldk_events::Event,
4647
},
47-
//PaymentReceived {
48-
//},
48+
/// A payment has been received.
49+
PaymentReceived {
50+
/// The hash of the payment.
51+
payment_hash: PaymentHash,
52+
/// The value, in thousandths of a satoshi that has been received.
53+
amount_msat: u64,
54+
/// The wrapped LDK event.
55+
inner: ldk_events::Event,
56+
},
57+
// TODO
4958
//ChannelOpened {
5059
//},
51-
//ChannelClosed {
52-
//},
53-
//OnChainPaymentReceived {
54-
//},
55-
//OnChainPaymentReceived {
56-
//},
60+
/// A channel has been closed.
61+
ChannelClosed {
62+
/// The channel_id of the channel which has been closed.
63+
channel_id: [u8; 32],
64+
/// The wrapped LDK event.
65+
inner: ldk_events::Event,
66+
}, //OnChainPaymentReceived {
67+
//},
68+
//OnChainPaymentReceived {
69+
//}
5770
}
5871

5972
impl Readable for LdkLiteEvent {
@@ -71,6 +84,20 @@ impl Readable for LdkLiteEvent {
7184
let inner: ldk_events::Event = MaybeReadable::read(reader)?.unwrap();
7285
Ok(Self::PaymentFailed { payment_hash, inner })
7386
}
87+
2u8 => {
88+
let payment_hash: PaymentHash = Readable::read(reader)?;
89+
let amount_msat: u64 = Readable::read(reader)?;
90+
let inner: ldk_events::Event = MaybeReadable::read(reader)?.unwrap();
91+
Ok(Self::PaymentReceived { payment_hash, amount_msat, inner })
92+
}
93+
//3u8 => {
94+
// TODO ChannelOpened
95+
//}
96+
4u8 => {
97+
let channel_id: [u8; 32] = Readable::read(reader)?;
98+
let inner: ldk_events::Event = MaybeReadable::read(reader)?.unwrap();
99+
Ok(Self::ChannelClosed { channel_id, inner })
100+
}
74101
_ => Err(lightning::ln::msgs::DecodeError::InvalidValue),
75102
}
76103
}
@@ -91,6 +118,22 @@ impl Writeable for LdkLiteEvent {
91118
inner.write(writer)?;
92119
Ok(())
93120
}
121+
Self::PaymentReceived { payment_hash, amount_msat, inner } => {
122+
2u8.write(writer)?;
123+
payment_hash.write(writer)?;
124+
amount_msat.write(writer)?;
125+
inner.write(writer)?;
126+
Ok(())
127+
}
128+
//Self::ChannelOpened { .. } => {
129+
//TODO
130+
//}
131+
Self::ChannelClosed { channel_id, inner } => {
132+
4u8.write(writer)?;
133+
channel_id.write(writer)?;
134+
inner.write(writer)?;
135+
Ok(())
136+
}
94137
}
95138
}
96139
}
@@ -261,6 +304,13 @@ impl ldk_events::EventHandler for LdkLiteEventHandler {
261304
ldk_events::PaymentPurpose::SpontaneousPayment(preimage) => Some(*preimage),
262305
};
263306
self.channel_manager.claim_funds(payment_preimage.unwrap());
307+
self.event_queue
308+
.add_event(LdkLiteEvent::PaymentReceived {
309+
payment_hash: *payment_hash,
310+
amount_msat: *amount_msat,
311+
inner: event.clone(),
312+
})
313+
.unwrap();
264314
}
265315
ldk_events::Event::PaymentClaimed { payment_hash, purpose, amount_msat } => {
266316
log_info!(
@@ -323,10 +373,12 @@ impl ldk_events::EventHandler for LdkLiteEventHandler {
323373
);
324374
}
325375
}
326-
self.event_queue.add_event(LdkLiteEvent::PaymentSuccessful {
327-
payment_hash: *payment_hash,
328-
inner: event.clone(),
329-
}).unwrap();
376+
self.event_queue
377+
.add_event(LdkLiteEvent::PaymentSuccessful {
378+
payment_hash: *payment_hash,
379+
inner: event.clone(),
380+
})
381+
.unwrap();
330382
}
331383
ldk_events::Event::PaymentFailed { payment_hash, .. } => {
332384
log_info!(
@@ -340,6 +392,12 @@ impl ldk_events::EventHandler for LdkLiteEventHandler {
340392
let payment = payments.get_mut(&payment_hash).unwrap();
341393
payment.status = PaymentStatus::Failed;
342394
}
395+
self.event_queue
396+
.add_event(LdkLiteEvent::PaymentFailed {
397+
payment_hash: *payment_hash,
398+
inner: event.clone(),
399+
})
400+
.unwrap();
343401
}
344402

345403
ldk_events::Event::PaymentPathSuccessful { .. } => {}
@@ -447,6 +505,12 @@ impl ldk_events::EventHandler for LdkLiteEventHandler {
447505
hex::to_string(channel_id),
448506
reason
449507
);
508+
self.event_queue
509+
.add_event(LdkLiteEvent::ChannelClosed {
510+
channel_id: *channel_id,
511+
inner: event.clone(),
512+
})
513+
.unwrap();
450514
}
451515
ldk_events::Event::DiscardFunding { .. } => {}
452516
}

0 commit comments

Comments
 (0)