Skip to content

Commit ebac78d

Browse files
committed
f - Implement EventHandler directly on NetworkGraph
1 parent 56b5378 commit ebac78d

File tree

2 files changed

+14
-21
lines changed

2 files changed

+14
-21
lines changed

lightning-background-processor/src/lib.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,6 @@ const FIRST_NETWORK_PRUNE_TIMER: u64 = 1;
9292

9393
/// Decorates an [`EventHandler`] with common functionality provided by standard [`EventHandler`]s.
9494
struct DecoratingEventHandler<
95-
'a,
9695
E: EventHandler,
9796
P: Deref<Target = P2PGossipSync<G, A, L>>,
9897
G: Deref<Target = NetworkGraph<L>>,
@@ -101,23 +100,20 @@ struct DecoratingEventHandler<
101100
>
102101
where A::Target: chain::Access, L::Target: Logger {
103102
event_handler: E,
104-
logger: &'a L,
105103
p2p_gossip_sync: Option<P>,
106104
}
107105

108106
impl<
109-
'a,
110107
E: EventHandler,
111108
P: Deref<Target = P2PGossipSync<G, A, L>>,
112109
G: Deref<Target = NetworkGraph<L>>,
113110
A: Deref,
114111
L: Deref,
115-
> EventHandler for DecoratingEventHandler<'a, E, P, G, A, L>
112+
> EventHandler for DecoratingEventHandler<E, P, G, A, L>
116113
where A::Target: chain::Access, L::Target: Logger {
117114
fn handle_event(&self, event: &Event) {
118115
if let Some(gossip_sync) = &self.p2p_gossip_sync {
119-
let event_handler = (gossip_sync.network_graph(), self.logger);
120-
event_handler.handle_event(event);
116+
gossip_sync.network_graph().handle_event(event);
121117
}
122118
self.event_handler.handle_event(event);
123119
}
@@ -217,7 +213,6 @@ impl BackgroundProcessor {
217213
let handle = thread::spawn(move || -> Result<(), std::io::Error> {
218214
let event_handler = DecoratingEventHandler {
219215
event_handler,
220-
logger: &logger,
221216
p2p_gossip_sync: p2p_gossip_sync.as_ref().map(|t| t.deref()),
222217
};
223218

lightning/src/routing/gossip.rs

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ pub struct NetworkGraph<L: Deref> where L::Target: Logger {
126126
secp_ctx: Secp256k1<secp256k1::VerifyOnly>,
127127
last_rapid_gossip_sync_timestamp: Mutex<Option<u32>>,
128128
genesis_hash: BlockHash,
129-
_logger: L,
129+
logger: L,
130130
// Lock order: channels -> nodes
131131
channels: RwLock<BTreeMap<u64, ChannelInfo>>,
132132
nodes: RwLock<BTreeMap<NodeId, NodeInfo>>,
@@ -248,29 +248,27 @@ where C::Target: chain::Access, L::Target: Logger
248248
}
249249
}
250250

251-
impl<G: Deref<Target = NetworkGraph<L>>, L: Deref> EventHandler for (&G, &L)
252-
where L::Target: Logger {
251+
impl<L: Deref> EventHandler for NetworkGraph<L> where L::Target: Logger {
253252
fn handle_event(&self, event: &Event) {
254253
if let Event::PaymentPathFailed { payment_hash: _, rejected_by_dest: _, network_update, .. } = event {
255254
if let Some(network_update) = network_update {
256-
let (network_graph, logger) = self;
257255
match *network_update {
258256
NetworkUpdate::ChannelUpdateMessage { ref msg } => {
259257
let short_channel_id = msg.contents.short_channel_id;
260258
let is_enabled = msg.contents.flags & (1 << 1) != (1 << 1);
261259
let status = if is_enabled { "enabled" } else { "disabled" };
262-
log_debug!(logger, "Updating channel with channel_update from a payment failure. Channel {} is {}.", short_channel_id, status);
263-
let _ = network_graph.update_channel(msg);
260+
log_debug!(self.logger, "Updating channel with channel_update from a payment failure. Channel {} is {}.", short_channel_id, status);
261+
let _ = self.update_channel(msg);
264262
},
265263
NetworkUpdate::ChannelFailure { short_channel_id, is_permanent } => {
266264
let action = if is_permanent { "Removing" } else { "Disabling" };
267-
log_debug!(logger, "{} channel graph entry for {} due to a payment failure.", action, short_channel_id);
268-
network_graph.channel_failed(short_channel_id, is_permanent);
265+
log_debug!(self.logger, "{} channel graph entry for {} due to a payment failure.", action, short_channel_id);
266+
self.channel_failed(short_channel_id, is_permanent);
269267
},
270268
NetworkUpdate::NodeFailure { ref node_id, is_permanent } => {
271269
let action = if is_permanent { "Removing" } else { "Disabling" };
272-
log_debug!(logger, "{} node graph entry for {} due to a payment failure.", action, node_id);
273-
network_graph.node_failed(node_id, is_permanent);
270+
log_debug!(self.logger, "{} node graph entry for {} due to a payment failure.", action, node_id);
271+
self.node_failed(node_id, is_permanent);
274272
},
275273
}
276274
}
@@ -984,7 +982,7 @@ impl<L: Deref> Writeable for NetworkGraph<L> where L::Target: Logger {
984982
}
985983

986984
impl<L: Deref> ReadableArgs<L> for NetworkGraph<L> where L::Target: Logger {
987-
fn read<R: io::Read>(reader: &mut R, _logger: L) -> Result<NetworkGraph<L>, DecodeError> {
985+
fn read<R: io::Read>(reader: &mut R, logger: L) -> Result<NetworkGraph<L>, DecodeError> {
988986
let _ver = read_ver_prefix!(reader, SERIALIZATION_VERSION);
989987

990988
let genesis_hash: BlockHash = Readable::read(reader)?;
@@ -1011,7 +1009,7 @@ impl<L: Deref> ReadableArgs<L> for NetworkGraph<L> where L::Target: Logger {
10111009
Ok(NetworkGraph {
10121010
secp_ctx: Secp256k1::verification_only(),
10131011
genesis_hash,
1014-
_logger,
1012+
logger,
10151013
channels: RwLock::new(channels),
10161014
nodes: RwLock::new(nodes),
10171015
last_rapid_gossip_sync_timestamp: Mutex::new(last_rapid_gossip_sync_timestamp),
@@ -1043,11 +1041,11 @@ impl<L: Deref> PartialEq for NetworkGraph<L> where L::Target: Logger {
10431041

10441042
impl<L: Deref> NetworkGraph<L> where L::Target: Logger {
10451043
/// Creates a new, empty, network graph.
1046-
pub fn new(genesis_hash: BlockHash, _logger: L) -> NetworkGraph<L> {
1044+
pub fn new(genesis_hash: BlockHash, logger: L) -> NetworkGraph<L> {
10471045
Self {
10481046
secp_ctx: Secp256k1::verification_only(),
10491047
genesis_hash,
1050-
_logger,
1048+
logger,
10511049
channels: RwLock::new(BTreeMap::new()),
10521050
nodes: RwLock::new(BTreeMap::new()),
10531051
last_rapid_gossip_sync_timestamp: Mutex::new(None),

0 commit comments

Comments
 (0)