@@ -14,6 +14,7 @@ use crate::io::{
1414 NODE_METRICS_KEY , NODE_METRICS_PRIMARY_NAMESPACE , NODE_METRICS_SECONDARY_NAMESPACE ,
1515} ;
1616use crate :: logger:: { log_error, LdkLogger , Logger } ;
17+ use crate :: payment:: store:: PaymentMetadata ;
1718use crate :: peer_store:: PeerStore ;
1819use crate :: sweep:: DeprecatedSpendableOutputInfo ;
1920use crate :: types:: { Broadcaster , DynStore , KeysManager , Sweeper } ;
@@ -232,6 +233,36 @@ where
232233 Ok ( res)
233234}
234235
236+ /// Read previously persisted payment metadata information from the store.
237+ pub ( crate ) fn read_metadata < L : Deref > (
238+ kv_store : Arc < DynStore > , logger : L ,
239+ ) -> Result < Vec < PaymentMetadata > , std:: io:: Error >
240+ where
241+ L :: Target : LdkLogger ,
242+ {
243+ let mut res = Vec :: new ( ) ;
244+
245+ for stored_key in kv_store. list (
246+ PAYMENT_INFO_PERSISTENCE_PRIMARY_NAMESPACE ,
247+ PAYMENT_METADATA_INFO_PERSISTENCE_SECONDARY_NAMESPACE ,
248+ ) ? {
249+ let mut reader = Cursor :: new ( kv_store. read (
250+ PAYMENT_INFO_PERSISTENCE_PRIMARY_NAMESPACE ,
251+ PAYMENT_METADATA_INFO_PERSISTENCE_SECONDARY_NAMESPACE ,
252+ & stored_key,
253+ ) ?) ;
254+ let payment = PaymentMetadata :: read ( & mut reader) . map_err ( |e| {
255+ log_error ! ( logger, "Failed to deserialize PaymentMetadata: {}" , e) ;
256+ std:: io:: Error :: new (
257+ std:: io:: ErrorKind :: InvalidData ,
258+ "Failed to deserialize PaymentMetadata" ,
259+ )
260+ } ) ?;
261+ res. push ( payment) ;
262+ }
263+ Ok ( res)
264+ }
265+
235266/// Read `OutputSweeper` state from the store.
236267pub ( crate ) fn read_output_sweeper (
237268 broadcaster : Arc < Broadcaster > , fee_estimator : Arc < OnchainFeeEstimator > ,
0 commit comments