@@ -179,7 +179,6 @@ uniffi::include_scaffolding!("ldk_node");
179
179
pub struct Node < K : KVStore + Sync + Send + ' static > {
180
180
runtime : Arc < RwLock < Option < tokio:: runtime:: Runtime > > > ,
181
181
stop_sender : tokio:: sync:: watch:: Sender < ( ) > ,
182
- stop_receiver : tokio:: sync:: watch:: Receiver < ( ) > ,
183
182
config : Arc < Config > ,
184
183
wallet : Arc < Wallet > ,
185
184
tx_sync : Arc < EsploraSyncClient < Arc < FilesystemLogger > > > ,
@@ -247,7 +246,7 @@ impl<K: KVStore + Sync + Send + 'static> Node<K> {
247
246
// Setup wallet sync
248
247
let wallet = Arc :: clone ( & self . wallet ) ;
249
248
let sync_logger = Arc :: clone ( & self . logger ) ;
250
- let mut stop_sync = self . stop_receiver . clone ( ) ;
249
+ let mut stop_sync = self . stop_sender . subscribe ( ) ;
251
250
let onchain_wallet_sync_interval_secs = self
252
251
. config
253
252
. onchain_wallet_sync_interval_secs
@@ -288,7 +287,7 @@ impl<K: KVStore + Sync + Send + 'static> Node<K> {
288
287
) ;
289
288
} ) ;
290
289
291
- let mut stop_fee_updates = self . stop_receiver . clone ( ) ;
290
+ let mut stop_fee_updates = self . stop_sender . subscribe ( ) ;
292
291
let fee_update_logger = Arc :: clone ( & self . logger ) ;
293
292
let fee_estimator = Arc :: clone ( & self . fee_estimator ) ;
294
293
let fee_rate_cache_update_interval_secs =
@@ -331,7 +330,7 @@ impl<K: KVStore + Sync + Send + 'static> Node<K> {
331
330
let sync_cmon = Arc :: clone ( & self . chain_monitor ) ;
332
331
let sync_sweeper = Arc :: clone ( & self . output_sweeper ) ;
333
332
let sync_logger = Arc :: clone ( & self . logger ) ;
334
- let mut stop_sync = self . stop_receiver . clone ( ) ;
333
+ let mut stop_sync = self . stop_sender . subscribe ( ) ;
335
334
let wallet_sync_interval_secs =
336
335
self . config . wallet_sync_interval_secs . max ( WALLET_SYNC_INTERVAL_MINIMUM_SECS ) ;
337
336
runtime. spawn ( async move {
@@ -369,7 +368,7 @@ impl<K: KVStore + Sync + Send + 'static> Node<K> {
369
368
let gossip_source = Arc :: clone ( & self . gossip_source ) ;
370
369
let gossip_sync_store = Arc :: clone ( & self . kv_store ) ;
371
370
let gossip_sync_logger = Arc :: clone ( & self . logger ) ;
372
- let mut stop_gossip_sync = self . stop_receiver . clone ( ) ;
371
+ let mut stop_gossip_sync = self . stop_sender . subscribe ( ) ;
373
372
runtime. spawn ( async move {
374
373
let mut interval = tokio:: time:: interval ( RGS_SYNC_INTERVAL ) ;
375
374
loop {
@@ -412,7 +411,7 @@ impl<K: KVStore + Sync + Send + 'static> Node<K> {
412
411
if let Some ( listening_addresses) = & self . config . listening_addresses {
413
412
// Setup networking
414
413
let peer_manager_connection_handler = Arc :: clone ( & self . peer_manager ) ;
415
- let mut stop_listen = self . stop_receiver . clone ( ) ;
414
+ let mut stop_listen = self . stop_sender . subscribe ( ) ;
416
415
let listening_logger = Arc :: clone ( & self . logger ) ;
417
416
418
417
let mut bind_addrs = Vec :: with_capacity ( listening_addresses. len ( ) ) ;
@@ -467,7 +466,7 @@ impl<K: KVStore + Sync + Send + 'static> Node<K> {
467
466
let connect_pm = Arc :: clone ( & self . peer_manager ) ;
468
467
let connect_logger = Arc :: clone ( & self . logger ) ;
469
468
let connect_peer_store = Arc :: clone ( & self . peer_store ) ;
470
- let mut stop_connect = self . stop_receiver . clone ( ) ;
469
+ let mut stop_connect = self . stop_sender . subscribe ( ) ;
471
470
runtime. spawn ( async move {
472
471
let mut interval = tokio:: time:: interval ( PEER_RECONNECTION_INTERVAL ) ;
473
472
interval. set_missed_tick_behavior ( tokio:: time:: MissedTickBehavior :: Skip ) ;
@@ -516,7 +515,7 @@ impl<K: KVStore + Sync + Send + 'static> Node<K> {
516
515
let bcast_config = Arc :: clone ( & self . config ) ;
517
516
let bcast_store = Arc :: clone ( & self . kv_store ) ;
518
517
let bcast_logger = Arc :: clone ( & self . logger ) ;
519
- let mut stop_bcast = self . stop_receiver . clone ( ) ;
518
+ let mut stop_bcast = self . stop_sender . subscribe ( ) ;
520
519
runtime. spawn ( async move {
521
520
// We check every 30 secs whether our last broadcast is NODE_ANN_BCAST_INTERVAL away.
522
521
let mut interval = tokio:: time:: interval ( Duration :: from_secs ( 30 ) ) ;
@@ -572,7 +571,7 @@ impl<K: KVStore + Sync + Send + 'static> Node<K> {
572
571
}
573
572
} ) ;
574
573
575
- let mut stop_tx_bcast = self . stop_receiver . clone ( ) ;
574
+ let mut stop_tx_bcast = self . stop_sender . subscribe ( ) ;
576
575
let tx_bcaster = Arc :: clone ( & self . tx_broadcaster ) ;
577
576
runtime. spawn ( async move {
578
577
// Every second we try to clear our broadcasting queue.
@@ -613,7 +612,7 @@ impl<K: KVStore + Sync + Send + 'static> Node<K> {
613
612
let background_logger = Arc :: clone ( & self . logger ) ;
614
613
let background_error_logger = Arc :: clone ( & self . logger ) ;
615
614
let background_scorer = Arc :: clone ( & self . scorer ) ;
616
- let stop_bp = self . stop_receiver . clone ( ) ;
615
+ let stop_bp = self . stop_sender . subscribe ( ) ;
617
616
let sleeper = move |d| {
618
617
let mut stop = stop_bp. clone ( ) ;
619
618
Box :: pin ( async move {
@@ -650,7 +649,7 @@ impl<K: KVStore + Sync + Send + 'static> Node<K> {
650
649
} ) ;
651
650
652
651
if let Some ( liquidity_source) = self . liquidity_source . as_ref ( ) {
653
- let mut stop_liquidity_handler = self . stop_receiver . clone ( ) ;
652
+ let mut stop_liquidity_handler = self . stop_sender . subscribe ( ) ;
654
653
let liquidity_handler = Arc :: clone ( & liquidity_source) ;
655
654
runtime. spawn ( async move {
656
655
loop {
0 commit comments