11use crate :: {
22 hex, ChannelManager , Error , FilesystemPersister , LdkLiteChainAccess , LdkLiteConfig ,
3- NetworkGraph , PaymentInfo , PaymentInfoStorage , PaymentStatus ,
3+ NetworkGraph , PaymentDirection , PaymentInfo , PaymentInfoStorage , PaymentStatus ,
44} ;
55
66#[ allow( unused_imports) ]
@@ -232,8 +232,7 @@ pub(crate) struct LdkLiteEventHandler {
232232 channel_manager : Arc < ChannelManager > ,
233233 network_graph : Arc < NetworkGraph > ,
234234 keys_manager : Arc < KeysManager > ,
235- inbound_payments : Arc < PaymentInfoStorage > ,
236- outbound_payments : Arc < PaymentInfoStorage > ,
235+ payment_store : Arc < PaymentInfoStorage < FilesystemPersister > > ,
237236 logger : Arc < FilesystemLogger > ,
238237 _config : Arc < LdkLiteConfig > ,
239238}
@@ -243,8 +242,8 @@ impl LdkLiteEventHandler {
243242 chain_access : Arc < LdkLiteChainAccess < bdk:: sled:: Tree > > ,
244243 event_queue : Arc < LdkLiteEventQueue < FilesystemPersister > > ,
245244 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 > ,
248247 _config : Arc < LdkLiteConfig > ,
249248 ) -> Self {
250249 Self {
@@ -253,8 +252,7 @@ impl LdkLiteEventHandler {
253252 channel_manager,
254253 network_graph,
255254 keys_manager,
256- inbound_payments,
257- outbound_payments,
255+ payment_store,
258256 logger,
259257 _config,
260258 }
@@ -339,49 +337,49 @@ impl ldk_events::EventHandler for LdkLiteEventHandler {
339337 ( Some ( * preimage) , None )
340338 }
341339 } ;
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 {
352349 preimage : payment_preimage,
350+ hash : * payment_hash,
353351 secret : payment_secret,
354- status : PaymentStatus :: Succeeded ,
355352 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 ( ) ;
359359 }
360360 ldk_events:: Event :: PaymentSent {
361361 payment_preimage,
362362 payment_hash,
363363 fee_paid_msat,
364364 ..
365365 } => {
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+ ) ;
385383 }
386384 self . event_queue
387385 . add_event ( LdkLiteEvent :: PaymentSuccessful {
@@ -397,19 +395,14 @@ impl ldk_events::EventHandler for LdkLiteEventHandler {
397395 hex:: to_string( & payment_hash. 0 )
398396 ) ;
399397
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 ( ) ;
405399 self . event_queue
406400 . add_event ( LdkLiteEvent :: PaymentFailed {
407401 payment_hash : * payment_hash,
408402 inner : event. clone ( ) ,
409403 } )
410404 . unwrap ( ) ;
411405 }
412-
413406 ldk_events:: Event :: PaymentPathSuccessful { .. } => { }
414407 ldk_events:: Event :: PaymentPathFailed { .. } => { }
415408 ldk_events:: Event :: ProbeSuccessful { .. } => { }
0 commit comments