1
1
use crate :: {
2
2
hex, ChannelManager , Error , FilesystemPersister , LdkLiteChainAccess , LdkLiteConfig ,
3
- NetworkGraph , PaymentInfo , PaymentInfoStorage , PaymentStatus ,
3
+ NetworkGraph , PaymentDirection , PaymentInfo , PaymentInfoStorage , PaymentStatus ,
4
4
} ;
5
5
6
6
#[ allow( unused_imports) ]
@@ -232,8 +232,7 @@ pub(crate) struct LdkLiteEventHandler {
232
232
channel_manager : Arc < ChannelManager > ,
233
233
network_graph : Arc < NetworkGraph > ,
234
234
keys_manager : Arc < KeysManager > ,
235
- inbound_payments : Arc < PaymentInfoStorage > ,
236
- outbound_payments : Arc < PaymentInfoStorage > ,
235
+ payment_store : Arc < PaymentInfoStorage < FilesystemPersister > > ,
237
236
logger : Arc < FilesystemLogger > ,
238
237
_config : Arc < LdkLiteConfig > ,
239
238
}
@@ -243,8 +242,8 @@ impl LdkLiteEventHandler {
243
242
chain_access : Arc < LdkLiteChainAccess < bdk:: sled:: Tree > > ,
244
243
event_queue : Arc < LdkLiteEventQueue < FilesystemPersister > > ,
245
244
channel_manager : Arc < ChannelManager > , network_graph : Arc < NetworkGraph > ,
246
- keys_manager : Arc < KeysManager > , inbound_payments : Arc < PaymentInfoStorage > ,
247
- outbound_payments : Arc < PaymentInfoStorage > , logger : Arc < FilesystemLogger > ,
245
+ keys_manager : Arc < KeysManager > ,
246
+ payment_store : Arc < PaymentInfoStorage < FilesystemPersister > > , logger : Arc < FilesystemLogger > ,
248
247
_config : Arc < LdkLiteConfig > ,
249
248
) -> Self {
250
249
Self {
@@ -253,8 +252,7 @@ impl LdkLiteEventHandler {
253
252
channel_manager,
254
253
network_graph,
255
254
keys_manager,
256
- inbound_payments,
257
- outbound_payments,
255
+ payment_store,
258
256
logger,
259
257
_config,
260
258
}
@@ -339,49 +337,49 @@ impl ldk_events::EventHandler for LdkLiteEventHandler {
339
337
( Some ( * preimage) , None )
340
338
}
341
339
} ;
342
- let mut payments = self . inbound_payments . lock ( ) . unwrap ( ) ;
343
- match payments. entry ( * payment_hash) {
344
- hash_map:: Entry :: Occupied ( mut e) => {
345
- let payment = e. get_mut ( ) ;
346
- payment. status = PaymentStatus :: Succeeded ;
347
- payment. preimage = payment_preimage;
348
- payment. secret = payment_secret;
349
- }
350
- hash_map:: Entry :: Vacant ( e) => {
351
- e. insert ( PaymentInfo {
340
+
341
+ let payment_info =
342
+ if let Some ( mut payment_info) = self . payment_store . payment ( payment_hash) {
343
+ payment_info. status = PaymentStatus :: Succeeded ;
344
+ payment_info. preimage = payment_preimage;
345
+ payment_info. secret = payment_secret;
346
+ payment_info
347
+ } else {
348
+ PaymentInfo {
352
349
preimage : payment_preimage,
350
+ hash : * payment_hash,
353
351
secret : payment_secret,
354
- status : PaymentStatus :: Succeeded ,
355
352
amount_msat : Some ( * amount_msat) ,
356
- } ) ;
357
- }
358
- }
353
+ direction : PaymentDirection :: Inbound ,
354
+ status : PaymentStatus :: Succeeded ,
355
+ }
356
+ } ;
357
+
358
+ self . payment_store . insert_payment ( payment_info) . unwrap ( ) ;
359
359
}
360
360
ldk_events:: Event :: PaymentSent {
361
361
payment_preimage,
362
362
payment_hash,
363
363
fee_paid_msat,
364
364
..
365
365
} => {
366
- let mut payments = self . outbound_payments . lock ( ) . unwrap ( ) ;
367
- for ( hash, payment) in payments. iter_mut ( ) {
368
- if * hash == * payment_hash {
369
- payment. preimage = Some ( * payment_preimage) ;
370
- payment. status = PaymentStatus :: Succeeded ;
371
- log_info ! (
372
- self . logger,
373
- "Successfully sent payment of {} millisatoshis{} from \
374
- payment hash {:?} with preimage {:?}",
375
- payment. amount_msat. unwrap( ) ,
376
- if let Some ( fee) = fee_paid_msat {
377
- format!( " (fee {} msat)" , fee)
378
- } else {
379
- "" . to_string( )
380
- } ,
381
- hex:: to_string( & payment_hash. 0 ) ,
382
- hex:: to_string( & payment_preimage. 0 )
383
- ) ;
384
- }
366
+ if let Some ( mut payment_info) = self . payment_store . payment ( payment_hash) {
367
+ payment_info. preimage = Some ( * payment_preimage) ;
368
+ payment_info. status = PaymentStatus :: Succeeded ;
369
+ self . payment_store . insert_payment ( payment_info. clone ( ) ) . unwrap ( ) ;
370
+ log_info ! (
371
+ self . logger,
372
+ "Successfully sent payment of {} millisatoshis{} from \
373
+ payment hash {:?} with preimage {:?}",
374
+ payment_info. amount_msat. unwrap( ) ,
375
+ if let Some ( fee) = fee_paid_msat {
376
+ format!( " (fee {} msat)" , fee)
377
+ } else {
378
+ "" . to_string( )
379
+ } ,
380
+ hex:: to_string( & payment_hash. 0 ) ,
381
+ hex:: to_string( & payment_preimage. 0 )
382
+ ) ;
385
383
}
386
384
self . event_queue
387
385
. add_event ( LdkLiteEvent :: PaymentSuccessful {
@@ -397,19 +395,14 @@ impl ldk_events::EventHandler for LdkLiteEventHandler {
397
395
hex:: to_string( & payment_hash. 0 )
398
396
) ;
399
397
400
- let mut payments = self . outbound_payments . lock ( ) . unwrap ( ) ;
401
- if payments. contains_key ( & payment_hash) {
402
- let payment = payments. get_mut ( & payment_hash) . unwrap ( ) ;
403
- payment. status = PaymentStatus :: Failed ;
404
- }
398
+ self . payment_store . set_payment_status ( payment_hash, PaymentStatus :: Failed ) . unwrap ( ) ;
405
399
self . event_queue
406
400
. add_event ( LdkLiteEvent :: PaymentFailed {
407
401
payment_hash : * payment_hash,
408
402
inner : event. clone ( ) ,
409
403
} )
410
404
. unwrap ( ) ;
411
405
}
412
-
413
406
ldk_events:: Event :: PaymentPathSuccessful { .. } => { }
414
407
ldk_events:: Event :: PaymentPathFailed { .. } => { }
415
408
ldk_events:: Event :: ProbeSuccessful { .. } => { }
0 commit comments