@@ -7,7 +7,7 @@ use crate::lsps0::ser::{
77 LSPS_MESSAGE_TYPE_ID ,
88} ;
99use crate :: lsps0:: service:: LSPS0ServiceHandler ;
10- use crate :: message_queue:: MessageQueue ;
10+ use crate :: message_queue:: { MessageQueue , ProcessMessagesCallback } ;
1111
1212use crate :: lsps1:: client:: { LSPS1ClientConfig , LSPS1ClientHandler } ;
1313use crate :: lsps1:: msgs:: LSPS1Message ;
@@ -17,7 +17,7 @@ use crate::lsps1::service::{LSPS1ServiceConfig, LSPS1ServiceHandler};
1717use crate :: lsps2:: client:: { LSPS2ClientConfig , LSPS2ClientHandler } ;
1818use crate :: lsps2:: msgs:: LSPS2Message ;
1919use crate :: lsps2:: service:: { LSPS2ServiceConfig , LSPS2ServiceHandler } ;
20- use crate :: prelude:: { new_hash_map, new_hash_set, HashMap , HashSet , ToString , Vec } ;
20+ use crate :: prelude:: { new_hash_map, new_hash_set, Box , HashMap , HashSet , ToString , Vec } ;
2121use crate :: sync:: { Arc , Mutex , RwLock } ;
2222
2323use lightning:: chain:: { self , BestBlock , Confirm , Filter , Listen } ;
@@ -315,69 +315,8 @@ where {
315315 /// ```
316316 ///
317317 /// [`PeerManager::process_events`]: lightning::ln::peer_handler::PeerManager::process_events
318- #[ cfg( feature = "std" ) ]
319- pub fn set_process_msgs_callback ( & self , callback : impl Fn ( ) + Send + Sync + ' static ) {
320- self . pending_messages . set_process_msgs_callback ( callback)
321- }
322-
323- /// Allows to set a callback that will be called after new messages are pushed to the message
324- /// queue.
325- ///
326- /// Usually, you'll want to use this to call [`PeerManager::process_events`] to clear the
327- /// message queue. For example:
328- ///
329- /// ```
330- /// # use lightning::io;
331- /// # use lightning_liquidity::LiquidityManager;
332- /// # use std::sync::{Arc, RwLock};
333- /// # use std::sync::atomic::{AtomicBool, Ordering};
334- /// # use std::time::SystemTime;
335- /// # struct MyStore {}
336- /// # impl lightning::util::persist::KVStore for MyStore {
337- /// # fn read(&self, primary_namespace: &str, secondary_namespace: &str, key: &str) -> io::Result<Vec<u8>> { Ok(Vec::new()) }
338- /// # fn write(&self, primary_namespace: &str, secondary_namespace: &str, key: &str, buf: &[u8]) -> io::Result<()> { Ok(()) }
339- /// # fn remove(&self, primary_namespace: &str, secondary_namespace: &str, key: &str, lazy: bool) -> io::Result<()> { Ok(()) }
340- /// # fn list(&self, primary_namespace: &str, secondary_namespace: &str) -> io::Result<Vec<String>> { Ok(Vec::new()) }
341- /// # }
342- /// # struct MyEntropySource {}
343- /// # impl lightning::sign::EntropySource for MyEntropySource {
344- /// # fn get_secure_random_bytes(&self) -> [u8; 32] { [0u8; 32] }
345- /// # }
346- /// # struct MyEventHandler {}
347- /// # impl MyEventHandler {
348- /// # async fn handle_event(&self, _: lightning::events::Event) {}
349- /// # }
350- /// # #[derive(Eq, PartialEq, Clone, Hash)]
351- /// # struct MySocketDescriptor {}
352- /// # impl lightning::ln::peer_handler::SocketDescriptor for MySocketDescriptor {
353- /// # fn send_data(&mut self, _data: &[u8], _resume_read: bool) -> usize { 0 }
354- /// # fn disconnect_socket(&mut self) {}
355- /// # }
356- /// # type MyBroadcaster = dyn lightning::chain::chaininterface::BroadcasterInterface;
357- /// # type MyFeeEstimator = dyn lightning::chain::chaininterface::FeeEstimator;
358- /// # type MyNodeSigner = dyn lightning::sign::NodeSigner;
359- /// # type MyUtxoLookup = dyn lightning::routing::utxo::UtxoLookup;
360- /// # type MyFilter = dyn lightning::chain::Filter;
361- /// # type MyLogger = dyn lightning::util::logger::Logger;
362- /// # type MyChainMonitor = lightning::chain::chainmonitor::ChainMonitor<lightning::sign::InMemorySigner, Arc<MyFilter>, Arc<MyBroadcaster>, Arc<MyFeeEstimator>, Arc<MyLogger>, Arc<MyStore>>;
363- /// # type MyPeerManager = lightning::ln::peer_handler::SimpleArcPeerManager<MySocketDescriptor, MyChainMonitor, MyBroadcaster, MyFeeEstimator, Arc<MyUtxoLookup>, MyLogger>;
364- /// # type MyNetworkGraph = lightning::routing::gossip::NetworkGraph<Arc<MyLogger>>;
365- /// # type MyGossipSync = lightning::routing::gossip::P2PGossipSync<Arc<MyNetworkGraph>, Arc<MyUtxoLookup>, Arc<MyLogger>>;
366- /// # type MyChannelManager = lightning::ln::channelmanager::SimpleArcChannelManager<MyChainMonitor, MyBroadcaster, MyFeeEstimator, MyLogger>;
367- /// # type MyScorer = RwLock<lightning::routing::scoring::ProbabilisticScorer<Arc<MyNetworkGraph>, Arc<MyLogger>>>;
368- /// # type MyLiquidityManager = LiquidityManager<Arc<MyEntropySource>, Arc<MyChannelManager>, Arc<MyFilter>>;
369- /// # fn setup_background_processing(my_persister: Arc<MyStore>, my_event_handler: Arc<MyEventHandler>, my_chain_monitor: Arc<MyChainMonitor>, my_channel_manager: Arc<MyChannelManager>, my_logger: Arc<MyLogger>, my_peer_manager: Arc<MyPeerManager>, my_liquidity_manager: Arc<MyLiquidityManager>) {
370- /// let process_msgs_pm = Arc::clone(&my_peer_manager);
371- /// let process_msgs_callback = move || process_msgs_pm.process_events();
372- ///
373- /// my_liquidity_manager.set_process_msgs_callback(process_msgs_callback);
374- /// # }
375- /// ```
376- ///
377- /// [`PeerManager::process_events`]: lightning::ln::peer_handler::PeerManager::process_events
378- #[ cfg( not( feature = "std" ) ) ]
379- pub fn set_process_msgs_callback ( & self , callback : impl Fn ( ) + ' static ) {
380- self . pending_messages . set_process_msgs_callback ( callback)
318+ pub fn set_process_msgs_callback < F : ' static + ProcessMessagesCallback > ( & self , callback : F ) {
319+ self . pending_messages . set_process_msgs_callback ( Box :: new ( callback) ) ;
381320 }
382321
383322 /// Blocks the current thread until next event is ready and returns it.
0 commit comments