}
}
-pub(crate) async fn poll_for_user_input(
+pub(crate) fn poll_for_user_input(
peer_manager: Arc<PeerManager>, channel_manager: Arc<ChannelManager>,
keys_manager: Arc<KeysManager>, network_graph: Arc<NetworkGraph>,
onion_messenger: Arc<OnionMessenger>, inbound_payments: Arc<Mutex<PaymentInfoStorage>>,
continue;
}
- if connect_peer_if_necessary(pubkey, peer_addr, peer_manager.clone())
- .await
+ if tokio::runtime::Handle::current()
+ .block_on(connect_peer_if_necessary(
+ pubkey,
+ peer_addr,
+ peer_manager.clone(),
+ ))
.is_err()
{
continue;
continue;
}
};
- if connect_peer_if_necessary(pubkey, peer_addr, peer_manager.clone())
- .await
+ if tokio::runtime::Handle::current()
+ .block_on(connect_peer_if_necessary(
+ pubkey,
+ peer_addr,
+ peer_manager.clone(),
+ ))
.is_ok()
{
println!("SUCCESS: connected to peer {}", pubkey);
));
// Start the CLI.
- let cli_poll = tokio::spawn(cli::poll_for_user_input(
- Arc::clone(&peer_manager),
- Arc::clone(&channel_manager),
- Arc::clone(&keys_manager),
- Arc::clone(&network_graph),
- Arc::clone(&onion_messenger),
- inbound_payments,
- outbound_payments,
- ldk_data_dir,
- network,
- Arc::clone(&logger),
- Arc::clone(&persister),
- ));
+ let cli_channel_manager = Arc::clone(&channel_manager);
+ let cli_persister = Arc::clone(&persister);
+ let cli_logger = Arc::clone(&logger);
+ let cli_peer_manager = Arc::clone(&peer_manager);
+ let cli_poll = tokio::task::spawn_blocking(move || {
+ cli::poll_for_user_input(
+ cli_peer_manager,
+ cli_channel_manager,
+ keys_manager,
+ network_graph,
+ onion_messenger,
+ inbound_payments,
+ outbound_payments,
+ ldk_data_dir,
+ network,
+ cli_logger,
+ cli_persister,
+ )
+ });
// Exit if either CLI polling exits or the background processor exits (which shouldn't happen
// unless we fail to write to the filesystem).