X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;ds=sidebyside;f=lightning-net-tokio%2Fsrc%2Flib.rs;fp=lightning-net-tokio%2Fsrc%2Flib.rs;h=37c9ddad76204ee68dda7656a81772bb97ef6fca;hb=3b8bf93251a9c8aa528c6961d572a611bc140eb5;hp=aeb5c5b7a87280c68720975c69c5d6167f5fab1b;hpb=7ca37097274d5d2ed66e5f42e9948f71a344681f;p=rust-lightning diff --git a/lightning-net-tokio/src/lib.rs b/lightning-net-tokio/src/lib.rs index aeb5c5b7..37c9ddad 100644 --- a/lightning-net-tokio/src/lib.rs +++ b/lightning-net-tokio/src/lib.rs @@ -8,64 +8,19 @@ // licenses. //! A socket handling library for those running in Tokio environments who wish to use -//! rust-lightning with native TcpStreams. +//! rust-lightning with native [`TcpStream`]s. //! //! Designed to be as simple as possible, the high-level usage is almost as simple as "hand over a -//! TcpStream and a reference to a PeerManager and the rest is handled", except for the -//! [Event](../lightning/util/events/enum.Event.html) handling mechanism; see example below. +//! [`TcpStream`] and a reference to a [`PeerManager`] and the rest is handled". //! -//! The PeerHandler, due to the fire-and-forget nature of this logic, must be an Arc, and must use -//! the SocketDescriptor provided here as the PeerHandler's SocketDescriptor. +//! The [`PeerManager`], due to the fire-and-forget nature of this logic, must be a reference, +//! (e.g. an [`Arc`]) and must use the [`SocketDescriptor`] provided here as the [`PeerManager`]'s +//! `SocketDescriptor` implementation. //! -//! Three methods are exposed to register a new connection for handling in tokio::spawn calls; see -//! their individual docs for details. +//! Three methods are exposed to register a new connection for handling in [`tokio::spawn`] calls; +//! see their individual docs for details. //! -//! # Example -//! ``` -//! use std::net::TcpStream; -//! use bitcoin::secp256k1::PublicKey; -//! use lightning::events::{Event, EventHandler, EventsProvider}; -//! use std::net::SocketAddr; -//! use std::sync::Arc; -//! -//! // Define concrete types for our high-level objects: -//! type TxBroadcaster = dyn lightning::chain::chaininterface::BroadcasterInterface + Send + Sync; -//! type FeeEstimator = dyn lightning::chain::chaininterface::FeeEstimator + Send + Sync; -//! type Logger = dyn lightning::util::logger::Logger + Send + Sync; -//! type NodeSigner = dyn lightning::chain::keysinterface::NodeSigner + Send + Sync; -//! type UtxoLookup = dyn lightning::routing::utxo::UtxoLookup + Send + Sync; -//! type ChainFilter = dyn lightning::chain::Filter + Send + Sync; -//! type DataPersister = dyn lightning::chain::chainmonitor::Persist + Send + Sync; -//! type ChainMonitor = lightning::chain::chainmonitor::ChainMonitor, Arc, Arc, Arc, Arc>; -//! type ChannelManager = Arc>; -//! type PeerManager = Arc>; -//! -//! // Connect to node with pubkey their_node_id at addr: -//! async fn connect_to_node(peer_manager: PeerManager, chain_monitor: Arc, channel_manager: ChannelManager, their_node_id: PublicKey, addr: SocketAddr) { -//! lightning_net_tokio::connect_outbound(peer_manager, their_node_id, addr).await; -//! loop { -//! let event_handler = |event: Event| { -//! // Handle the event! -//! }; -//! channel_manager.await_persistable_update(); -//! channel_manager.process_pending_events(&event_handler); -//! chain_monitor.process_pending_events(&event_handler); -//! } -//! } -//! -//! // Begin reading from a newly accepted socket and talk to the peer: -//! async fn accept_socket(peer_manager: PeerManager, chain_monitor: Arc, channel_manager: ChannelManager, socket: TcpStream) { -//! lightning_net_tokio::setup_inbound(peer_manager, socket); -//! loop { -//! let event_handler = |event: Event| { -//! // Handle the event! -//! }; -//! channel_manager.await_persistable_update(); -//! channel_manager.process_pending_events(&event_handler); -//! chain_monitor.process_pending_events(&event_handler); -//! } -//! } -//! ``` +//! [`PeerManager`]: lightning::ln::peer_handler::PeerManager // Prefix these with `rustdoc::` when we update our MSRV to be >= 1.52 to remove warnings. #![deny(broken_intra_doc_links)]