-
Notifications
You must be signed in to change notification settings - Fork 339
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add list_channels_by_counterparty
method
#2079
Add list_channels_by_counterparty
method
#2079
Conversation
Uh, CI is broken again, although seems unrelated:
|
Codecov ReportPatch coverage:
📣 This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more Additional details and impacted files@@ Coverage Diff @@
## main #2079 +/- ##
==========================================
+ Coverage 91.13% 91.25% +0.12%
==========================================
Files 101 101
Lines 48769 49913 +1144
Branches 48769 49913 +1144
==========================================
+ Hits 44445 45550 +1105
- Misses 4324 4363 +39
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. ☔ View full report at Codecov. |
@@ -1786,6 +1794,25 @@ where | |||
self.list_channels_with_filter(|&(_, ref channel)| channel.is_live()) | |||
} | |||
|
|||
/// Gets the list of channels we have with a given counterparty, in random order. | |||
pub fn list_channels_with_counterparty(&self, counterparty_node_id: &PublicKey) -> Vec<ChannelDetails> { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is this significantly faster than just doing a .filter on list_channels?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It should avoid the allocation of a large Vec<ChannelDetails>
that we then filter down again. But really not sure what that does in actual performance. It would be nice to just expose list_channels_with_filter
, but we of course can't do that since Channel
is not public.
lightning/src/ln/channelmanager.rs
Outdated
/// Gets the list of channels we have with a given counterparty, in random order. | ||
pub fn list_channels_with_counterparty(&self, counterparty_node_id: &PublicKey) -> Vec<ChannelDetails> { | ||
let mut res = Vec::with_capacity(self.short_to_chan_info.read().unwrap().len()); | ||
{ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Scope not needed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
While we already provide a `list_channels` method, it could result in quite a large `Vec<ChannelDetails>`. Here, we provide the means to query our channels by `counterparty_node_id` and DRY up the code.
f08bdb5
to
8419d13
Compare
Alright, never in a hast trust vim's formatting capabilities. Squashed commits with the indentation fixups: $ git diff-tree -U2 f08bdb57 8419d13d
diff --git a/lightning/src/ln/channelmanager.rs b/lightning/src/ln/channelmanager.rs
index 779cb5d2..50cdd2a4 100644
--- a/lightning/src/ln/channelmanager.rs
+++ b/lightning/src/ln/channelmanager.rs
@@ -1251,5 +1251,5 @@ impl ChannelDetails {
outbound_htlc_minimum_msat: if channel.have_received_message() {
Some(channel.get_counterparty_htlc_minimum_msat()) } else { None },
- outbound_htlc_maximum_msat: channel.get_counterparty_htlc_maximum_msat(),
+ outbound_htlc_maximum_msat: channel.get_counterparty_htlc_maximum_msat(),
},
funding_txo: channel.get_funding_txo(),
@@ -1807,5 +1807,5 @@ where
.iter()
.map(|(_, channel)|
- ChannelDetails::from_channel(channel, best_block_height, features.clone()))
+ ChannelDetails::from_channel(channel, best_block_height, features.clone()))
.collect();
} |
While we already provide a
list_channels
method, it could result in quite a largeVec<ChannelDetails>
. Here, we provide the means to query our channels bycounterparty_node_id
and DRY up the code.