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,16 @@ 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+ fee_estimator : Arc < OnchainFeeEstimator > ,
120+ tx_broadcaster : Arc < Broadcaster > ,
121+ kv_store : Arc < DynStore > ,
122+ config : Arc < Config > ,
123+ logger : Arc < FilesystemLogger > ,
124+ node_metrics : Arc < RwLock < NodeMetrics > > ,
125+ } ,
112126}
113127
114128impl ChainSource {
@@ -141,6 +155,26 @@ impl ChainSource {
141155 }
142156 }
143157
158+ pub ( crate ) fn new_bitcoind_rpc (
159+ host : String , port : u16 , rpc_user : String , rpc_password : String ,
160+ onchain_wallet : Arc < Wallet > , fee_estimator : Arc < OnchainFeeEstimator > ,
161+ tx_broadcaster : Arc < Broadcaster > , kv_store : Arc < DynStore > , config : Arc < Config > ,
162+ logger : Arc < FilesystemLogger > , node_metrics : Arc < RwLock < NodeMetrics > > ,
163+ ) -> Self {
164+ let bitcoind_rpc_client =
165+ Arc :: new ( BitcoindRpcClient :: new ( host, port, rpc_user, rpc_password) ) ;
166+ Self :: BitcoindRpc {
167+ bitcoind_rpc_client,
168+ onchain_wallet,
169+ fee_estimator,
170+ tx_broadcaster,
171+ kv_store,
172+ config,
173+ logger,
174+ node_metrics,
175+ }
176+ }
177+
144178 pub ( crate ) async fn continuously_sync_wallets (
145179 & self , mut stop_sync_receiver : tokio:: sync:: watch:: Receiver < ( ) > ,
146180 channel_manager : Arc < ChannelManager > , chain_monitor : Arc < ChainMonitor > ,
@@ -201,6 +235,7 @@ impl ChainSource {
201235 }
202236 }
203237 } ,
238+ Self :: BitcoindRpc { .. } => todo ! ( ) ,
204239 }
205240 }
206241
@@ -319,6 +354,7 @@ impl ChainSource {
319354
320355 res
321356 } ,
357+ Self :: BitcoindRpc { .. } => todo ! ( ) ,
322358 }
323359 }
324360
@@ -411,6 +447,7 @@ impl ChainSource {
411447
412448 res
413449 } ,
450+ Self :: BitcoindRpc { .. } => todo ! ( ) ,
414451 }
415452 }
416453
@@ -506,6 +543,7 @@ impl ChainSource {
506543
507544 Ok ( ( ) )
508545 } ,
546+ Self :: BitcoindRpc { .. } => todo ! ( ) ,
509547 }
510548 }
511549
@@ -582,6 +620,7 @@ impl ChainSource {
582620 }
583621 }
584622 } ,
623+ Self :: BitcoindRpc { .. } => todo ! ( ) ,
585624 }
586625 }
587626}
@@ -590,11 +629,13 @@ impl Filter for ChainSource {
590629 fn register_tx ( & self , txid : & bitcoin:: Txid , script_pubkey : & bitcoin:: Script ) {
591630 match self {
592631 Self :: Esplora { tx_sync, .. } => tx_sync. register_tx ( txid, script_pubkey) ,
632+ Self :: BitcoindRpc { .. } => ( ) ,
593633 }
594634 }
595635 fn register_output ( & self , output : lightning:: chain:: WatchedOutput ) {
596636 match self {
597637 Self :: Esplora { tx_sync, .. } => tx_sync. register_output ( output) ,
638+ Self :: BitcoindRpc { .. } => ( ) ,
598639 }
599640 }
600641}
0 commit comments