X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Frouting%2Fgossip.rs;fp=lightning%2Fsrc%2Frouting%2Fgossip.rs;h=c820b4741bc5c2a35d902d339e07d0ff0e195cd6;hb=7da08a77ba5b6d4bfb3c09b885703518966c00de;hp=e5be0dfbfc6e29b8e19bb6f28c1b37603c4b2c1d;hpb=87170e9f452774a297ee82d1ff3334af22bfefd8;p=rust-lightning diff --git a/lightning/src/routing/gossip.rs b/lightning/src/routing/gossip.rs index e5be0dfb..c820b474 100644 --- a/lightning/src/routing/gossip.rs +++ b/lightning/src/routing/gossip.rs @@ -194,6 +194,7 @@ pub struct NetworkGraph where L::Target: Logger { pub struct ReadOnlyNetworkGraph<'a> { channels: RwLockReadGuard<'a, IndexedMap>, nodes: RwLockReadGuard<'a, IndexedMap>, + max_node_counter: u32, } /// Update to the [`NetworkGraph`] based on payment failure information conveyed via the Onion @@ -1052,6 +1053,14 @@ impl<'a> DirectedChannelInfo<'a> { /// Refers to the `node_id` receiving the payment from the previous hop. #[inline] pub(super) fn target(&self) -> &'a NodeId { if self.from_node_one { &self.channel.node_two } else { &self.channel.node_one } } + + /// Returns the source node's counter + #[inline] + pub(super) fn source_counter(&self) -> u32 { if self.from_node_one { self.channel.node_one_counter } else { self.channel.node_two_counter } } + + /// Returns the target node's counter + #[inline] + pub(super) fn target_counter(&self) -> u32 { if self.from_node_one { self.channel.node_two_counter } else { self.channel.node_one_counter } } } impl<'a> fmt::Debug for DirectedChannelInfo<'a> { @@ -1483,6 +1492,7 @@ impl NetworkGraph where L::Target: Logger { ReadOnlyNetworkGraph { channels, nodes, + max_node_counter: (self.next_node_counter.load(Ordering::Acquire) as u32).saturating_sub(1), } } @@ -2169,6 +2179,11 @@ impl ReadOnlyNetworkGraph<'_> { self.nodes.get(&NodeId::from_pubkey(&pubkey)) .and_then(|node| node.announcement_info.as_ref().map(|ann| ann.addresses().to_vec())) } + + /// Gets the maximum possible node_counter for a node in this graph + pub(crate) fn max_node_counter(&self) -> u32 { + self.max_node_counter + } } #[cfg(test)]