@@ -27,7 +27,8 @@ use std::time::Duration;
27
27
/// The event queue will be persisted under this key.
28
28
pub ( crate ) const EVENTS_PERSISTENCE_KEY : & str = "events" ;
29
29
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.
31
32
#[ derive( Debug , Clone ) ]
32
33
pub enum LdkLiteEvent {
33
34
/// A payment we sent was successful.
@@ -44,16 +45,28 @@ pub enum LdkLiteEvent {
44
45
/// The wrapped LDK event.
45
46
inner : ldk_events:: Event ,
46
47
} ,
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
49
58
//ChannelOpened {
50
59
//},
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
+ //}
57
70
}
58
71
59
72
impl Readable for LdkLiteEvent {
@@ -71,6 +84,20 @@ impl Readable for LdkLiteEvent {
71
84
let inner: ldk_events:: Event = MaybeReadable :: read ( reader) ?. unwrap ( ) ;
72
85
Ok ( Self :: PaymentFailed { payment_hash, inner } )
73
86
}
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
+ }
74
101
_ => Err ( lightning:: ln:: msgs:: DecodeError :: InvalidValue ) ,
75
102
}
76
103
}
@@ -91,6 +118,22 @@ impl Writeable for LdkLiteEvent {
91
118
inner. write ( writer) ?;
92
119
Ok ( ( ) )
93
120
}
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
+ }
94
137
}
95
138
}
96
139
}
@@ -261,6 +304,13 @@ impl ldk_events::EventHandler for LdkLiteEventHandler {
261
304
ldk_events:: PaymentPurpose :: SpontaneousPayment ( preimage) => Some ( * preimage) ,
262
305
} ;
263
306
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 ( ) ;
264
314
}
265
315
ldk_events:: Event :: PaymentClaimed { payment_hash, purpose, amount_msat } => {
266
316
log_info ! (
@@ -323,10 +373,12 @@ impl ldk_events::EventHandler for LdkLiteEventHandler {
323
373
) ;
324
374
}
325
375
}
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 ( ) ;
330
382
}
331
383
ldk_events:: Event :: PaymentFailed { payment_hash, .. } => {
332
384
log_info ! (
@@ -340,6 +392,12 @@ impl ldk_events::EventHandler for LdkLiteEventHandler {
340
392
let payment = payments. get_mut ( & payment_hash) . unwrap ( ) ;
341
393
payment. status = PaymentStatus :: Failed ;
342
394
}
395
+ self . event_queue
396
+ . add_event ( LdkLiteEvent :: PaymentFailed {
397
+ payment_hash : * payment_hash,
398
+ inner : event. clone ( ) ,
399
+ } )
400
+ . unwrap ( ) ;
343
401
}
344
402
345
403
ldk_events:: Event :: PaymentPathSuccessful { .. } => { }
@@ -447,6 +505,12 @@ impl ldk_events::EventHandler for LdkLiteEventHandler {
447
505
hex:: to_string( channel_id) ,
448
506
reason
449
507
) ;
508
+ self . event_queue
509
+ . add_event ( LdkLiteEvent :: ChannelClosed {
510
+ channel_id : * channel_id,
511
+ inner : event. clone ( ) ,
512
+ } )
513
+ . unwrap ( ) ;
450
514
}
451
515
ldk_events:: Event :: DiscardFunding { .. } => { }
452
516
}
0 commit comments