mirror of
https://github.com/lightningdevkit/rust-lightning.git
synced 2025-02-25 07:17:40 +01:00
Add a new NodeFeatures constructor to capture the types of flags
When ChannelMessageHandler implementations wish to return a NodeFeatures which contain all the known flags that are relevant to channel handling, but not gossip handling, they currently need to do so by manually constructing a NodeFeatures with all known flags and then clearing the ones they don't want. Instead of spreading this logic across the codebase, this consolidates such construction into one place in features.rs.
This commit is contained in:
parent
c106d4ff9f
commit
7eee7974b0
3 changed files with 11 additions and 3 deletions
|
@ -6122,7 +6122,7 @@ impl<Signer: Sign, M: Deref , T: Deref , K: Deref , F: Deref , L: Deref >
|
|||
}
|
||||
|
||||
fn provided_node_features(&self) -> NodeFeatures {
|
||||
NodeFeatures::known()
|
||||
NodeFeatures::known_channel_features()
|
||||
}
|
||||
|
||||
fn provided_init_features(&self, _their_init_features: &PublicKey) -> InitFeatures {
|
||||
|
|
|
@ -164,7 +164,8 @@ mod sealed {
|
|||
],
|
||||
optional_features: [
|
||||
// Note that if new "non-channel-related" flags are added here they should be
|
||||
// explicitly cleared in InitFeatures::known_channel_features.
|
||||
// explicitly cleared in InitFeatures::known_channel_features and
|
||||
// NodeFeatures::known_channel_features.
|
||||
// Byte 0
|
||||
DataLossProtect | InitialRoutingSync | UpfrontShutdownScript | GossipQueries,
|
||||
// Byte 1
|
||||
|
@ -558,6 +559,13 @@ impl InitFeatures {
|
|||
}
|
||||
}
|
||||
|
||||
impl NodeFeatures {
|
||||
/// Returns the set of known node features that are related to channels.
|
||||
pub fn known_channel_features() -> NodeFeatures {
|
||||
Self::known().clear_gossip_queries()
|
||||
}
|
||||
}
|
||||
|
||||
impl InvoiceFeatures {
|
||||
/// Converts `InvoiceFeatures` to `Features<C>`. Only known `InvoiceFeatures` relevant to
|
||||
/// context `C` are included in the result.
|
||||
|
|
|
@ -358,7 +358,7 @@ impl msgs::ChannelMessageHandler for TestChannelMessageHandler {
|
|||
self.received_msg(wire::Message::Error(msg.clone()));
|
||||
}
|
||||
fn provided_node_features(&self) -> NodeFeatures {
|
||||
NodeFeatures::empty()
|
||||
NodeFeatures::known_channel_features()
|
||||
}
|
||||
fn provided_init_features(&self, _their_init_features: &PublicKey) -> InitFeatures {
|
||||
InitFeatures::known_channel_features()
|
||||
|
|
Loading…
Add table
Reference in a new issue