@@ -27,7 +27,8 @@ use std::time::Duration;
2727/// The event queue will be persisted under this key.
2828pub ( 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 ) ]
3233pub 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
5972impl 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