@@ -6,7 +6,8 @@ use chain::transaction::OutPoint;
6
6
use chain:: keysinterface:: KeysInterface ;
7
7
use ln:: channelmanager:: { ChannelManager , ChannelManagerReadArgs , RAACommitmentOrder , PaymentPreimage , PaymentHash , PaymentSecret , PaymentSendFailure } ;
8
8
use ln:: channelmonitor:: { ChannelMonitor , ManyChannelMonitor } ;
9
- use ln:: router:: { Route , Router , RouterReadArgs } ;
9
+ use ln:: router:: { Route , Router } ;
10
+ use ln:: network_graph_monitor:: { NetworkGraphMonitor , NetworkGraphMonitorReadArgs } ;
10
11
use ln:: features:: InitFeatures ;
11
12
use ln:: msgs;
12
13
use ln:: msgs:: { ChannelMessageHandler , RoutingMessageHandler } ;
@@ -83,6 +84,7 @@ pub struct Node<'a, 'b: 'a, 'c: 'b> {
83
84
pub keys_manager : & ' b test_utils:: TestKeysInterface ,
84
85
pub node : & ' a ChannelManager < EnforcingChannelKeys , & ' b TestChannelMonitor < ' c > , & ' c test_utils:: TestBroadcaster , & ' b test_utils:: TestKeysInterface , & ' c test_utils:: TestFeeEstimator > ,
85
86
pub router : Router ,
87
+ pub network_graph_monitor : NetworkGraphMonitor ,
86
88
pub node_seed : [ u8 ; 32 ] ,
87
89
pub network_payment_count : Rc < RefCell < u8 > > ,
88
90
pub network_chan_count : Rc < RefCell < u32 > > ,
@@ -100,15 +102,15 @@ impl<'a, 'b, 'c> Drop for Node<'a, 'b, 'c> {
100
102
// Check that if we serialize the Router, we can deserialize it again.
101
103
{
102
104
let mut w = test_utils:: TestVecWriter ( Vec :: new ( ) ) ;
103
- self . router . write ( & mut w) . unwrap ( ) ;
104
- let deserialized_router = Router :: read ( & mut :: std:: io:: Cursor :: new ( & w. 0 ) , RouterReadArgs {
105
+ self . network_graph_monitor . write ( & mut w) . unwrap ( ) ;
106
+ let network_graph_monitor = NetworkGraphMonitor :: read ( & mut :: std:: io:: Cursor :: new ( & w. 0 ) , NetworkGraphMonitorReadArgs {
105
107
chain_monitor : Arc :: clone ( & self . chain_monitor ) as Arc < chaininterface:: ChainWatchInterface > ,
106
108
logger : Arc :: clone ( & self . logger ) as Arc < Logger >
107
109
} ) . unwrap ( ) ;
108
110
let mut chan_progress = 0 ;
109
111
loop {
110
- let orig_announcements = self . router . get_next_channel_announcements ( chan_progress, 255 ) ;
111
- let deserialized_announcements = deserialized_router . get_next_channel_announcements ( chan_progress, 255 ) ;
112
+ let orig_announcements = self . network_graph_monitor . get_next_channel_announcements ( chan_progress, 255 ) ;
113
+ let deserialized_announcements = network_graph_monitor . get_next_channel_announcements ( chan_progress, 255 ) ;
112
114
assert ! ( orig_announcements == deserialized_announcements) ;
113
115
chan_progress = match orig_announcements. last ( ) {
114
116
Some ( announcement) => announcement. 0 . contents . short_channel_id + 1 ,
@@ -117,8 +119,8 @@ impl<'a, 'b, 'c> Drop for Node<'a, 'b, 'c> {
117
119
}
118
120
let mut node_progress = None ;
119
121
loop {
120
- let orig_announcements = self . router . get_next_node_announcements ( node_progress. as_ref ( ) , 255 ) ;
121
- let deserialized_announcements = deserialized_router . get_next_node_announcements ( node_progress. as_ref ( ) , 255 ) ;
122
+ let orig_announcements = self . network_graph_monitor . get_next_node_announcements ( node_progress. as_ref ( ) , 255 ) ;
123
+ let deserialized_announcements = network_graph_monitor . get_next_node_announcements ( node_progress. as_ref ( ) , 255 ) ;
122
124
assert ! ( orig_announcements == deserialized_announcements) ;
123
125
node_progress = match orig_announcements. last ( ) {
124
126
Some ( announcement) => Some ( announcement. contents . node_id ) ,
@@ -456,11 +458,11 @@ pub fn create_announced_chan_between_nodes_with_value<'a, 'b, 'c, 'd>(nodes: &'a
456
458
} ;
457
459
458
460
for node in nodes {
459
- assert ! ( node. router . handle_channel_announcement( & chan_announcement. 0 ) . unwrap( ) ) ;
460
- node. router . handle_channel_update ( & chan_announcement. 1 ) . unwrap ( ) ;
461
- node. router . handle_channel_update ( & chan_announcement. 2 ) . unwrap ( ) ;
462
- node. router . handle_node_announcement ( & a_node_announcement) . unwrap ( ) ;
463
- node. router . handle_node_announcement ( & b_node_announcement) . unwrap ( ) ;
461
+ assert ! ( node. network_graph_monitor . handle_channel_announcement( & chan_announcement. 0 ) . unwrap( ) ) ;
462
+ node. network_graph_monitor . handle_channel_update ( & chan_announcement. 1 ) . unwrap ( ) ;
463
+ node. network_graph_monitor . handle_channel_update ( & chan_announcement. 2 ) . unwrap ( ) ;
464
+ node. network_graph_monitor . handle_node_announcement ( & a_node_announcement) . unwrap ( ) ;
465
+ node. network_graph_monitor . handle_node_announcement ( & b_node_announcement) . unwrap ( ) ;
464
466
}
465
467
( chan_announcement. 1 , chan_announcement. 2 , chan_announcement. 3 , chan_announcement. 4 )
466
468
}
@@ -934,7 +936,8 @@ pub fn claim_payment<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expected_route:
934
936
pub const TEST_FINAL_CLTV : u32 = 32 ;
935
937
936
938
pub fn route_payment < ' a , ' b , ' c > ( origin_node : & Node < ' a , ' b , ' c > , expected_route : & [ & Node < ' a , ' b , ' c > ] , recv_value : u64 ) -> ( PaymentPreimage , PaymentHash ) {
937
- let route = origin_node. router . get_route ( & expected_route. last ( ) . unwrap ( ) . node . get_our_node_id ( ) , None , & Vec :: new ( ) , recv_value, TEST_FINAL_CLTV ) . unwrap ( ) ;
939
+ let network = & origin_node. network_graph_monitor . network_map . read ( ) . unwrap ( ) ;
940
+ let route = origin_node. router . get_route ( network, & expected_route. last ( ) . unwrap ( ) . node . get_our_node_id ( ) , None , & Vec :: new ( ) , recv_value, TEST_FINAL_CLTV ) . unwrap ( ) ;
938
941
assert_eq ! ( route. paths. len( ) , 1 ) ;
939
942
assert_eq ! ( route. paths[ 0 ] . len( ) , expected_route. len( ) ) ;
940
943
for ( node, hop) in expected_route. iter ( ) . zip ( route. paths [ 0 ] . iter ( ) ) {
@@ -945,7 +948,8 @@ pub fn route_payment<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expected_route:
945
948
}
946
949
947
950
pub fn route_over_limit < ' a , ' b , ' c > ( origin_node : & Node < ' a , ' b , ' c > , expected_route : & [ & Node < ' a , ' b , ' c > ] , recv_value : u64 ) {
948
- let route = origin_node. router . get_route ( & expected_route. last ( ) . unwrap ( ) . node . get_our_node_id ( ) , None , & Vec :: new ( ) , recv_value, TEST_FINAL_CLTV ) . unwrap ( ) ;
951
+ let network = & origin_node. network_graph_monitor . network_map . read ( ) . unwrap ( ) ;
952
+ let route = origin_node. router . get_route ( network, & expected_route. last ( ) . unwrap ( ) . node . get_our_node_id ( ) , None , & Vec :: new ( ) , recv_value, TEST_FINAL_CLTV ) . unwrap ( ) ;
949
953
assert_eq ! ( route. paths. len( ) , 1 ) ;
950
954
assert_eq ! ( route. paths[ 0 ] . len( ) , expected_route. len( ) ) ;
951
955
for ( node, hop) in expected_route. iter ( ) . zip ( route. paths [ 0 ] . iter ( ) ) {
@@ -1087,11 +1091,12 @@ pub fn create_network<'a, 'b: 'a, 'c: 'b>(node_count: usize, cfgs: &'b Vec<NodeC
1087
1091
let block_notifier = chaininterface:: BlockNotifier :: new ( cfgs[ i] . chain_monitor . clone ( ) ) ;
1088
1092
block_notifier. register_listener ( & cfgs[ i] . chan_monitor . simple_monitor as & chaininterface:: ChainListener ) ;
1089
1093
block_notifier. register_listener ( & chan_mgrs[ i] as & chaininterface:: ChainListener ) ;
1090
- let router = Router :: new ( PublicKey :: from_secret_key ( & secp_ctx, & cfgs[ i] . keys_manager . get_node_secret ( ) ) , cfgs[ i] . chain_monitor . clone ( ) , cfgs[ i] . logger . clone ( ) as Arc < Logger > ) ;
1094
+ let network_graph_monitor = NetworkGraphMonitor :: new ( PublicKey :: from_secret_key ( & secp_ctx, & cfgs[ i] . keys_manager . get_node_secret ( ) ) , cfgs[ i] . chain_monitor . clone ( ) , cfgs[ i] . logger . clone ( ) as Arc < Logger > ) ;
1095
+ let router = Router :: new ( cfgs[ i] . logger . clone ( ) as Arc < Logger > ) ;
1091
1096
nodes. push ( Node { chain_monitor : cfgs[ i] . chain_monitor . clone ( ) , block_notifier,
1092
1097
tx_broadcaster : cfgs[ i] . tx_broadcaster , chan_monitor : & cfgs[ i] . chan_monitor ,
1093
- keys_manager : & cfgs[ i] . keys_manager , node : & chan_mgrs[ i] , router ,
1094
- node_seed : cfgs[ i] . node_seed , network_chan_count : chan_count. clone ( ) ,
1098
+ keys_manager : & cfgs[ i] . keys_manager , node : & chan_mgrs[ i] , network_graph_monitor ,
1099
+ router , node_seed : cfgs[ i] . node_seed , network_chan_count : chan_count. clone ( ) ,
1095
1100
network_payment_count : payment_count. clone ( ) , logger : cfgs[ i] . logger . clone ( ) ,
1096
1101
} )
1097
1102
}
@@ -1222,8 +1227,8 @@ pub fn get_announce_close_broadcast_events<'a, 'b, 'c>(nodes: &Vec<Node<'a, 'b,
1222
1227
} ;
1223
1228
1224
1229
for node in nodes {
1225
- node. router . handle_channel_update ( & as_update) . unwrap ( ) ;
1226
- node. router . handle_channel_update ( & bs_update) . unwrap ( ) ;
1230
+ node. network_graph_monitor . handle_channel_update ( & as_update) . unwrap ( ) ;
1231
+ node. network_graph_monitor . handle_channel_update ( & bs_update) . unwrap ( ) ;
1227
1232
}
1228
1233
}
1229
1234
0 commit comments