@@ -126,7 +126,7 @@ pub struct NetworkGraph<L: Deref> where L::Target: Logger {
126
126
secp_ctx : Secp256k1 < secp256k1:: VerifyOnly > ,
127
127
last_rapid_gossip_sync_timestamp : Mutex < Option < u32 > > ,
128
128
genesis_hash : BlockHash ,
129
- _logger : L ,
129
+ logger : L ,
130
130
// Lock order: channels -> nodes
131
131
channels : RwLock < BTreeMap < u64 , ChannelInfo > > ,
132
132
nodes : RwLock < BTreeMap < NodeId , NodeInfo > > ,
@@ -184,17 +184,6 @@ impl_writeable_tlv_based_enum_upgradable!(NetworkUpdate,
184
184
} ,
185
185
) ;
186
186
187
- impl < G : Deref < Target =NetworkGraph < L > > , C : Deref , L : Deref > EventHandler for P2PGossipSync < G , C , L >
188
- where C :: Target : chain:: Access , L :: Target : Logger {
189
- fn handle_event ( & self , event : & Event ) {
190
- if let Event :: PaymentPathFailed { payment_hash : _, rejected_by_dest : _, network_update, .. } = event {
191
- if let Some ( network_update) = network_update {
192
- self . handle_network_update ( network_update) ;
193
- }
194
- }
195
- }
196
- }
197
-
198
187
/// Receives and validates network updates from peers,
199
188
/// stores authentic and relevant data as a network graph.
200
189
/// This network graph is then used for routing payments.
@@ -257,27 +246,32 @@ where C::Target: chain::Access, L::Target: Logger
257
246
false
258
247
}
259
248
}
249
+ }
260
250
261
- /// Applies changes to the [`NetworkGraph`] from the given update.
262
- fn handle_network_update ( & self , update : & NetworkUpdate ) {
263
- match * update {
264
- NetworkUpdate :: ChannelUpdateMessage { ref msg } => {
265
- let short_channel_id = msg. contents . short_channel_id ;
266
- let is_enabled = msg. contents . flags & ( 1 << 1 ) != ( 1 << 1 ) ;
267
- let status = if is_enabled { "enabled" } else { "disabled" } ;
268
- log_debug ! ( self . logger, "Updating channel with channel_update from a payment failure. Channel {} is {}." , short_channel_id, status) ;
269
- let _ = self . network_graph . update_channel ( msg) ;
270
- } ,
271
- NetworkUpdate :: ChannelFailure { short_channel_id, is_permanent } => {
272
- let action = if is_permanent { "Removing" } else { "Disabling" } ;
273
- log_debug ! ( self . logger, "{} channel graph entry for {} due to a payment failure." , action, short_channel_id) ;
274
- self . network_graph . channel_failed ( short_channel_id, is_permanent) ;
275
- } ,
276
- NetworkUpdate :: NodeFailure { ref node_id, is_permanent } => {
277
- let action = if is_permanent { "Removing" } else { "Disabling" } ;
278
- log_debug ! ( self . logger, "{} node graph entry for {} due to a payment failure." , action, node_id) ;
279
- self . network_graph . node_failed ( node_id, is_permanent) ;
280
- } ,
251
+ impl < L : Deref > EventHandler for NetworkGraph < L > where L :: Target : Logger {
252
+ fn handle_event ( & self , event : & Event ) {
253
+ if let Event :: PaymentPathFailed { payment_hash : _, rejected_by_dest : _, network_update, .. } = event {
254
+ if let Some ( network_update) = network_update {
255
+ match * network_update {
256
+ NetworkUpdate :: ChannelUpdateMessage { ref msg } => {
257
+ let short_channel_id = msg. contents . short_channel_id ;
258
+ let is_enabled = msg. contents . flags & ( 1 << 1 ) != ( 1 << 1 ) ;
259
+ let status = if is_enabled { "enabled" } else { "disabled" } ;
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) ;
262
+ } ,
263
+ NetworkUpdate :: ChannelFailure { short_channel_id, is_permanent } => {
264
+ let action = if is_permanent { "Removing" } else { "Disabling" } ;
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) ;
267
+ } ,
268
+ NetworkUpdate :: NodeFailure { ref node_id, is_permanent } => {
269
+ let action = if is_permanent { "Removing" } else { "Disabling" } ;
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) ;
272
+ } ,
273
+ }
274
+ }
281
275
}
282
276
}
283
277
}
@@ -988,7 +982,7 @@ impl<L: Deref> Writeable for NetworkGraph<L> where L::Target: Logger {
988
982
}
989
983
990
984
impl < L : Deref > ReadableArgs < L > for NetworkGraph < L > where L :: Target : Logger {
991
- 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 > {
992
986
let _ver = read_ver_prefix ! ( reader, SERIALIZATION_VERSION ) ;
993
987
994
988
let genesis_hash: BlockHash = Readable :: read ( reader) ?;
@@ -1015,7 +1009,7 @@ impl<L: Deref> ReadableArgs<L> for NetworkGraph<L> where L::Target: Logger {
1015
1009
Ok ( NetworkGraph {
1016
1010
secp_ctx : Secp256k1 :: verification_only ( ) ,
1017
1011
genesis_hash,
1018
- _logger ,
1012
+ logger ,
1019
1013
channels : RwLock :: new ( channels) ,
1020
1014
nodes : RwLock :: new ( nodes) ,
1021
1015
last_rapid_gossip_sync_timestamp : Mutex :: new ( last_rapid_gossip_sync_timestamp) ,
@@ -1047,11 +1041,11 @@ impl<L: Deref> PartialEq for NetworkGraph<L> where L::Target: Logger {
1047
1041
1048
1042
impl < L : Deref > NetworkGraph < L > where L :: Target : Logger {
1049
1043
/// Creates a new, empty, network graph.
1050
- pub fn new ( genesis_hash : BlockHash , _logger : L ) -> NetworkGraph < L > {
1044
+ pub fn new ( genesis_hash : BlockHash , logger : L ) -> NetworkGraph < L > {
1051
1045
Self {
1052
1046
secp_ctx : Secp256k1 :: verification_only ( ) ,
1053
1047
genesis_hash,
1054
- _logger ,
1048
+ logger ,
1055
1049
channels : RwLock :: new ( BTreeMap :: new ( ) ) ,
1056
1050
nodes : RwLock :: new ( BTreeMap :: new ( ) ) ,
1057
1051
last_rapid_gossip_sync_timestamp : Mutex :: new ( None ) ,
@@ -2055,10 +2049,8 @@ mod tests {
2055
2049
#[ test]
2056
2050
fn handling_network_update ( ) {
2057
2051
let logger = test_utils:: TestLogger :: new ( ) ;
2058
- let chain_source = Arc :: new ( test_utils:: TestChainSource :: new ( Network :: Testnet ) ) ;
2059
2052
let genesis_hash = genesis_block ( Network :: Testnet ) . header . block_hash ( ) ;
2060
2053
let network_graph = NetworkGraph :: new ( genesis_hash, & logger) ;
2061
- let gossip_sync = P2PGossipSync :: new ( & network_graph, Some ( chain_source. clone ( ) ) , & logger) ;
2062
2054
let secp_ctx = Secp256k1 :: new ( ) ;
2063
2055
2064
2056
let node_1_privkey = & SecretKey :: from_slice ( & [ 42 ; 32 ] ) . unwrap ( ) ;
@@ -2081,7 +2073,7 @@ mod tests {
2081
2073
let valid_channel_update = get_signed_channel_update ( |_| { } , node_1_privkey, & secp_ctx) ;
2082
2074
assert ! ( network_graph. read_only( ) . channels( ) . get( & short_channel_id) . unwrap( ) . one_to_two. is_none( ) ) ;
2083
2075
2084
- gossip_sync . handle_event ( & Event :: PaymentPathFailed {
2076
+ network_graph . handle_event ( & Event :: PaymentPathFailed {
2085
2077
payment_id : None ,
2086
2078
payment_hash : PaymentHash ( [ 0 ; 32 ] ) ,
2087
2079
rejected_by_dest : false ,
@@ -2108,7 +2100,7 @@ mod tests {
2108
2100
}
2109
2101
} ;
2110
2102
2111
- gossip_sync . handle_event ( & Event :: PaymentPathFailed {
2103
+ network_graph . handle_event ( & Event :: PaymentPathFailed {
2112
2104
payment_id : None ,
2113
2105
payment_hash : PaymentHash ( [ 0 ; 32 ] ) ,
2114
2106
rejected_by_dest : false ,
@@ -2133,7 +2125,7 @@ mod tests {
2133
2125
}
2134
2126
2135
2127
// Permanent closing deletes a channel
2136
- gossip_sync . handle_event ( & Event :: PaymentPathFailed {
2128
+ network_graph . handle_event ( & Event :: PaymentPathFailed {
2137
2129
payment_id : None ,
2138
2130
payment_hash : PaymentHash ( [ 0 ; 32 ] ) ,
2139
2131
rejected_by_dest : false ,
0 commit comments