@@ -55,12 +55,14 @@ use crate::gossip::GossipSource;
5555use crate :: io:: sqlite_store:: SqliteStore ;
5656use crate :: io:: utils:: {
5757 read_event_queue, read_external_pathfinding_scores_from_cache, read_network_graph,
58- read_node_metrics, read_output_sweeper, read_payments, read_peer_info, read_scorer ,
59- write_node_metrics,
58+ read_node_metrics, read_output_sweeper, read_payments, read_peer_info, read_pending_payments ,
59+ read_scorer , write_node_metrics,
6060} ;
6161use crate :: io:: vss_store:: VssStoreBuilder ;
6262use crate :: io:: {
6363 self , PAYMENT_INFO_PERSISTENCE_PRIMARY_NAMESPACE , PAYMENT_INFO_PERSISTENCE_SECONDARY_NAMESPACE ,
64+ PENDING_PAYMENT_INFO_PERSISTENCE_PRIMARY_NAMESPACE ,
65+ PENDING_PAYMENT_INFO_PERSISTENCE_SECONDARY_NAMESPACE ,
6466} ;
6567use crate :: liquidity:: {
6668 LSPS1ClientConfig , LSPS2ClientConfig , LSPS2ServiceConfig , LiquiditySourceBuilder ,
@@ -73,8 +75,8 @@ use crate::runtime::{Runtime, RuntimeSpawner};
7375use crate :: tx_broadcaster:: TransactionBroadcaster ;
7476use crate :: types:: {
7577 AsyncPersister , ChainMonitor , ChannelManager , DynStore , DynStoreWrapper , GossipSync , Graph ,
76- KeysManager , MessageRouter , OnionMessenger , PaymentStore , PeerManager , Persister ,
77- SyncAndAsyncKVStore ,
78+ KeysManager , MessageRouter , OnionMessenger , PaymentStore , PeerManager , PendingPaymentStore ,
79+ Persister , SyncAndAsyncKVStore ,
7880} ;
7981use crate :: wallet:: persist:: KVStoreWalletPersister ;
8082use crate :: wallet:: Wallet ;
@@ -1057,12 +1059,14 @@ fn build_with_store_internal(
10571059
10581060 let kv_store_ref = Arc :: clone ( & kv_store) ;
10591061 let logger_ref = Arc :: clone ( & logger) ;
1060- let ( payment_store_res, node_metris_res) = runtime. block_on ( async move {
1061- tokio:: join!(
1062- read_payments( & * kv_store_ref, Arc :: clone( & logger_ref) ) ,
1063- read_node_metrics( & * kv_store_ref, Arc :: clone( & logger_ref) ) ,
1064- )
1065- } ) ;
1062+ let ( payment_store_res, node_metris_res, pending_payment_store_res) =
1063+ runtime. block_on ( async move {
1064+ tokio:: join!(
1065+ read_payments( & * kv_store_ref, Arc :: clone( & logger_ref) ) ,
1066+ read_node_metrics( & * kv_store_ref, Arc :: clone( & logger_ref) ) ,
1067+ read_pending_payments( & * kv_store_ref, Arc :: clone( & logger_ref) )
1068+ )
1069+ } ) ;
10661070
10671071 // Initialize the status fields.
10681072 let node_metrics = match node_metris_res {
@@ -1243,6 +1247,20 @@ fn build_with_store_internal(
12431247 } ,
12441248 } ;
12451249
1250+ let pending_payment_store = match pending_payment_store_res {
1251+ Ok ( pending_payments) => Arc :: new ( PendingPaymentStore :: new (
1252+ pending_payments,
1253+ PENDING_PAYMENT_INFO_PERSISTENCE_PRIMARY_NAMESPACE . to_string ( ) ,
1254+ PENDING_PAYMENT_INFO_PERSISTENCE_SECONDARY_NAMESPACE . to_string ( ) ,
1255+ Arc :: clone ( & kv_store) ,
1256+ Arc :: clone ( & logger) ,
1257+ ) ) ,
1258+ Err ( e) => {
1259+ log_error ! ( logger, "Failed to read pending payment data from store: {}" , e) ;
1260+ return Err ( BuildError :: ReadFailed ) ;
1261+ } ,
1262+ } ;
1263+
12461264 let wallet = Arc :: new ( Wallet :: new (
12471265 bdk_wallet,
12481266 wallet_persister,
@@ -1251,6 +1269,7 @@ fn build_with_store_internal(
12511269 Arc :: clone ( & payment_store) ,
12521270 Arc :: clone ( & config) ,
12531271 Arc :: clone ( & logger) ,
1272+ Arc :: clone ( & pending_payment_store) ,
12541273 ) ) ;
12551274
12561275 // Initialize the KeysManager
0 commit comments