X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning-custom-message%2Fsrc%2Flib.rs;h=e2000bc5804c35023c669a94240c4406619f44ef;hb=b8d4ac1371bf0db3b28339d4e12fadf02f6add3d;hp=a6e43978d47ded2e1c9efd58c50fe234d7a02564;hpb=e954ee8256a70ee917135f4c03c8726bf305c2fc;p=rust-lightning diff --git a/lightning-custom-message/src/lib.rs b/lightning-custom-message/src/lib.rs index a6e43978d..e2000bc58 100644 --- a/lightning-custom-message/src/lib.rs +++ b/lightning-custom-message/src/lib.rs @@ -12,6 +12,7 @@ //! `Foo` and `Bar` messages, and further composing it with a handler for `Baz` messages. //! //!``` +//! # fn main() {} // Avoid #[macro_export] generating an in-function warning //! # extern crate bitcoin; //! extern crate lightning; //! #[macro_use] @@ -20,6 +21,7 @@ //! # use bitcoin::secp256k1::PublicKey; //! # use lightning::io; //! # use lightning::ln::msgs::{DecodeError, LightningError}; +//! # use lightning::ln::features::{InitFeatures, NodeFeatures}; //! use lightning::ln::peer_handler::CustomMessageHandler; //! use lightning::ln::wire::{CustomMessageReader, self}; //! use lightning::util::ser::Writeable; @@ -66,6 +68,12 @@ //! # fn get_and_clear_pending_msg(&self) -> Vec<(PublicKey, Self::CustomMessage)> { //! # unimplemented!() //! # } +//! # fn provided_node_features(&self) -> NodeFeatures { +//! # unimplemented!() +//! # } +//! # fn provided_init_features(&self, _their_node_id: &PublicKey) -> InitFeatures { +//! # unimplemented!() +//! # } //! } //! //! #[derive(Debug)] @@ -106,6 +114,12 @@ //! # fn get_and_clear_pending_msg(&self) -> Vec<(PublicKey, Self::CustomMessage)> { //! # unimplemented!() //! # } +//! # fn provided_node_features(&self) -> NodeFeatures { +//! # unimplemented!() +//! # } +//! # fn provided_init_features(&self, _their_node_id: &PublicKey) -> InitFeatures { +//! # unimplemented!() +//! # } //! } //! //! #[derive(Debug)] @@ -146,9 +160,14 @@ //! # fn get_and_clear_pending_msg(&self) -> Vec<(PublicKey, Self::CustomMessage)> { //! # unimplemented!() //! # } +//! # fn provided_node_features(&self) -> NodeFeatures { +//! # unimplemented!() +//! # } +//! # fn provided_init_features(&self, _their_node_id: &PublicKey) -> InitFeatures { +//! # unimplemented!() +//! # } //! } //! -//! # fn main() { //! // The first crate may define a handler composing `FooHandler` and `BarHandler` and export the //! // corresponding message type ids as a macro to use in further composition. //! @@ -188,7 +207,6 @@ //! macro_rules! foo_bar_baz_type_ids { //! () => { foo_bar_type_ids!() | baz_type_id!() } //! } -//! # } //!``` //! //! [BOLT 1]: https://github.com/lightning/bolts/blob/master/01-messaging.md @@ -268,6 +286,22 @@ macro_rules! composite_custom_message_handler { )* .collect() } + + fn provided_node_features(&self) -> $crate::lightning::ln::features::NodeFeatures { + $crate::lightning::ln::features::NodeFeatures::empty() + $( + | self.$field.provided_node_features() + )* + } + + fn provided_init_features( + &self, their_node_id: &$crate::bitcoin::secp256k1::PublicKey + ) -> $crate::lightning::ln::features::InitFeatures { + $crate::lightning::ln::features::InitFeatures::empty() + $( + | self.$field.provided_init_features(their_node_id) + )* + } } impl $crate::lightning::ln::wire::CustomMessageReader for $handler {