55// http://opensource.org/licenses/MIT>, at your option. You may not use this file except in
66// accordance with one or both of these licenses.
77
8+ mod bitcoind_rpc;
9+
810use crate :: config:: {
911 Config , EsploraSyncConfig , BDK_CLIENT_CONCURRENCY , BDK_CLIENT_STOP_GAP ,
1012 BDK_WALLET_SYNC_TIMEOUT_SECS , FEE_RATE_CACHE_UPDATE_TIMEOUT_SECS , LDK_WALLET_SYNC_TIMEOUT_SECS ,
@@ -35,6 +37,8 @@ use std::collections::HashMap;
3537use std:: sync:: { Arc , Mutex , RwLock } ;
3638use std:: time:: { Duration , Instant , SystemTime , UNIX_EPOCH } ;
3739
40+ use self :: bitcoind_rpc:: BitcoindRpcClient ;
41+
3842// The default Esplora server we're using.
3943pub ( crate ) const DEFAULT_ESPLORA_SERVER_URL : & str = "https://blockstream.info/api" ;
4044
@@ -109,6 +113,18 @@ pub(crate) enum ChainSource {
109113 logger : Arc < FilesystemLogger > ,
110114 node_metrics : Arc < RwLock < NodeMetrics > > ,
111115 } ,
116+ BitcoindRpc {
117+ bitcoind_rpc_client : Arc < BitcoindRpcClient > ,
118+ onchain_wallet : Arc < Wallet > ,
119+ onchain_wallet_sync_status : Mutex < WalletSyncStatus > ,
120+ lightning_wallet_sync_status : Mutex < WalletSyncStatus > ,
121+ fee_estimator : Arc < OnchainFeeEstimator > ,
122+ tx_broadcaster : Arc < Broadcaster > ,
123+ kv_store : Arc < DynStore > ,
124+ config : Arc < Config > ,
125+ logger : Arc < FilesystemLogger > ,
126+ node_metrics : Arc < RwLock < NodeMetrics > > ,
127+ } ,
112128}
113129
114130impl ChainSource {
@@ -141,6 +157,30 @@ impl ChainSource {
141157 }
142158 }
143159
160+ pub ( crate ) fn new_bitcoind_rpc (
161+ host : String , port : u16 , rpc_user : String , rpc_password : String ,
162+ onchain_wallet : Arc < Wallet > , fee_estimator : Arc < OnchainFeeEstimator > ,
163+ tx_broadcaster : Arc < Broadcaster > , kv_store : Arc < DynStore > , config : Arc < Config > ,
164+ logger : Arc < FilesystemLogger > , node_metrics : Arc < RwLock < NodeMetrics > > ,
165+ ) -> Self {
166+ let bitcoind_rpc_client =
167+ Arc :: new ( BitcoindRpcClient :: new ( host, port, rpc_user, rpc_password) ) ;
168+ let onchain_wallet_sync_status = Mutex :: new ( WalletSyncStatus :: Completed ) ;
169+ let lightning_wallet_sync_status = Mutex :: new ( WalletSyncStatus :: Completed ) ;
170+ Self :: BitcoindRpc {
171+ bitcoind_rpc_client,
172+ onchain_wallet,
173+ onchain_wallet_sync_status,
174+ lightning_wallet_sync_status,
175+ fee_estimator,
176+ tx_broadcaster,
177+ kv_store,
178+ config,
179+ logger,
180+ node_metrics,
181+ }
182+ }
183+
144184 pub ( crate ) async fn continuously_sync_wallets (
145185 & self , mut stop_sync_receiver : tokio:: sync:: watch:: Receiver < ( ) > ,
146186 channel_manager : Arc < ChannelManager > , chain_monitor : Arc < ChainMonitor > ,
@@ -201,6 +241,7 @@ impl ChainSource {
201241 }
202242 }
203243 } ,
244+ Self :: BitcoindRpc { .. } => todo ! ( ) ,
204245 }
205246 }
206247
@@ -319,6 +360,7 @@ impl ChainSource {
319360
320361 res
321362 } ,
363+ Self :: BitcoindRpc { .. } => todo ! ( ) ,
322364 }
323365 }
324366
@@ -411,6 +453,7 @@ impl ChainSource {
411453
412454 res
413455 } ,
456+ Self :: BitcoindRpc { .. } => todo ! ( ) ,
414457 }
415458 }
416459
@@ -506,6 +549,7 @@ impl ChainSource {
506549
507550 Ok ( ( ) )
508551 } ,
552+ Self :: BitcoindRpc { .. } => todo ! ( ) ,
509553 }
510554 }
511555
@@ -582,6 +626,7 @@ impl ChainSource {
582626 }
583627 }
584628 } ,
629+ Self :: BitcoindRpc { .. } => todo ! ( ) ,
585630 }
586631 }
587632}
@@ -590,11 +635,13 @@ impl Filter for ChainSource {
590635 fn register_tx ( & self , txid : & bitcoin:: Txid , script_pubkey : & bitcoin:: Script ) {
591636 match self {
592637 Self :: Esplora { tx_sync, .. } => tx_sync. register_tx ( txid, script_pubkey) ,
638+ Self :: BitcoindRpc { .. } => ( ) ,
593639 }
594640 }
595641 fn register_output ( & self , output : lightning:: chain:: WatchedOutput ) {
596642 match self {
597643 Self :: Esplora { tx_sync, .. } => tx_sync. register_output ( output) ,
644+ Self :: BitcoindRpc { .. } => ( ) ,
598645 }
599646 }
600647}
0 commit comments