X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Fln%2Fmod.rs;h=bacb9e86c791bf61dee44246751c4f85c0e0f366;hb=1c9df02cbf51b6e6ac15f3d52da5f95f8b7beed2;hp=bc28063145c84117ce44a0baf4391bd63472d66a;hpb=e1208bfd66908818604da97e924899d6843078da;p=rust-lightning diff --git a/lightning/src/ln/mod.rs b/lightning/src/ln/mod.rs index bc280631..bacb9e86 100644 --- a/lightning/src/ln/mod.rs +++ b/lightning/src/ln/mod.rs @@ -7,24 +7,13 @@ // You may not use this file except in accordance with one or both of these // licenses. -//! High level lightning structs and impls live here. -//! -//! You probably want to create a [`ChannelManager`], and a [`P2PGossipSync`] first. -//! Then, you probably want to pass them both on to a peer_handler::PeerManager and use that to -//! create/manage connections and call get_and_clear_pending_events after each action, handling -//! them appropriately. -//! -//! When you want to open/close a channel or send a payment, call into your [`ChannelManager`] and -//! when you want to learn things about the network topology (eg get a route for sending a payment), -//! call into your [`P2PGossipSync`]. -//! -//! [`ChannelManager`]: channelmanager::ChannelManager -//! [`P2PGossipSync`]: crate::routing::gossip::P2PGossipSync +//! Implementations of various parts of the Lightning protocol are in this module. #[cfg(any(test, feature = "_test_utils"))] #[macro_use] pub mod functional_test_utils; +pub mod channel_id; pub mod channelmanager; pub mod inbound_payment; pub mod msgs; @@ -43,6 +32,9 @@ pub mod channel; #[cfg(not(fuzzing))] pub(crate) mod channel; +// Re-export ChannelId +pub use self::channel_id::ChannelId; + pub(crate) mod onion_utils; mod outbound_payment; pub mod wire; @@ -82,16 +74,33 @@ mod shutdown_tests; pub use self::peer_channel_encryptor::LN_MAX_MSG_LEN; /// payment_hash type, use to cross-lock hop -/// (C-not exported) as we just use [u8; 32] directly -#[derive(Hash, Copy, Clone, PartialEq, Eq, Debug)] +/// +/// This is not exported to bindings users as we just use [u8; 32] directly +#[derive(Hash, Copy, Clone, PartialEq, Eq, Debug, Ord, PartialOrd)] pub struct PaymentHash(pub [u8; 32]); + +impl core::fmt::Display for PaymentHash { + fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { + crate::util::logger::DebugBytes(&self.0).fmt(f) + } +} + /// payment_preimage type, use to route payment between hop -/// (C-not exported) as we just use [u8; 32] directly -#[derive(Hash, Copy, Clone, PartialEq, Eq, Debug)] +/// +/// This is not exported to bindings users as we just use [u8; 32] directly +#[derive(Hash, Copy, Clone, PartialEq, Eq, Debug, Ord, PartialOrd)] pub struct PaymentPreimage(pub [u8; 32]); + +impl core::fmt::Display for PaymentPreimage { + fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { + crate::util::logger::DebugBytes(&self.0).fmt(f) + } +} + /// payment_secret type, use to authenticate sender to the receiver and tie MPP HTLCs together -/// (C-not exported) as we just use [u8; 32] directly -#[derive(Hash, Copy, Clone, PartialEq, Eq, Debug)] +/// +/// This is not exported to bindings users as we just use [u8; 32] directly +#[derive(Hash, Copy, Clone, PartialEq, Eq, Debug, Ord, PartialOrd)] pub struct PaymentSecret(pub [u8; 32]); use crate::prelude::*;