@@ -7,6 +7,7 @@ use everscale_crypto::ed25519;
77use futures_util:: stream:: FuturesUnordered ;
88use futures_util:: StreamExt ;
99use tycho_core:: blockchain_rpc:: BlockchainRpcService ;
10+ use tycho_core:: overlay_client:: PublicOverlayClient ;
1011use tycho_network:: {
1112 DhtClient , DhtConfig , DhtService , Network , OverlayConfig , OverlayId , OverlayService , PeerId ,
1213 PeerResolver , PublicOverlay , Router ,
@@ -82,17 +83,17 @@ fn make_fast_overlay_config() -> OverlayConfig {
8283
8384pub struct Node {
8485 network : Network ,
85- public_overlay : PublicOverlay ,
8686 dht_client : DhtClient ,
87+ overlay_client : PublicOverlayClient ,
8788}
8889
8990impl Node {
9091 pub fn network ( & self ) -> & Network {
9192 & self . network
9293 }
9394
94- pub fn public_overlay ( & self ) -> & PublicOverlay {
95- & self . public_overlay
95+ pub fn overlay_client ( & self ) -> & PublicOverlayClient {
96+ & self . overlay_client
9697 }
9798
9899 fn with_random_key ( storage : Storage ) -> Self {
@@ -112,12 +113,15 @@ impl Node {
112113 ) ;
113114 overlay_service. add_public_overlay ( & public_overlay) ;
114115
116+ let overlay_client =
117+ PublicOverlayClient :: new ( network. clone ( ) , public_overlay, Default :: default ( ) ) ;
118+
115119 let dht_client = dht_service. make_client ( & network) ;
116120
117121 Self {
118122 network,
119- public_overlay,
120123 dht_client,
124+ overlay_client,
121125 }
122126 }
123127}
@@ -141,7 +145,7 @@ pub fn make_network(storage: Storage, node_count: usize) -> Vec<Node> {
141145#[ allow( dead_code) ]
142146pub trait TestNode {
143147 fn network ( & self ) -> & Network ;
144- fn public_overlay ( & self ) -> & PublicOverlay ;
148+ fn overlay_client ( & self ) -> & PublicOverlayClient ;
145149 fn force_update_validators ( & self , peers : Vec < PeerId > ) ;
146150}
147151
@@ -150,11 +154,13 @@ impl TestNode for Node {
150154 self . network ( )
151155 }
152156
153- fn public_overlay ( & self ) -> & PublicOverlay {
154- self . public_overlay ( )
157+ fn overlay_client ( & self ) -> & PublicOverlayClient {
158+ & self . overlay_client
155159 }
156160
157- fn force_update_validators ( & self , _: Vec < PeerId > ) { }
161+ fn force_update_validators ( & self , peers : Vec < PeerId > ) {
162+ self . overlay_client . update_validator_set ( & peers) ;
163+ }
158164}
159165
160166#[ allow( dead_code) ]
@@ -174,7 +180,12 @@ pub async fn discover<N: TestNode>(nodes: &[N]) -> anyhow::Result<()> {
174180 let left_id = left. network ( ) . peer_id ( ) ;
175181 let right_id = right. network ( ) . peer_id ( ) ;
176182
177- if left. public_overlay ( ) . read_entries ( ) . contains ( right_id) {
183+ if left
184+ . overlay_client ( )
185+ . overlay ( )
186+ . read_entries ( )
187+ . contains ( right_id)
188+ {
178189 peer_states. entry ( left_id) . or_default ( ) . knows_about += 1 ;
179190 peer_states. entry ( right_id) . or_default ( ) . known_by += 1 ;
180191 }
@@ -201,7 +212,7 @@ pub async fn discover<N: TestNode>(nodes: &[N]) -> anyhow::Result<()> {
201212 tracing:: info!( "resolving entries..." ) ;
202213 for node in nodes {
203214 let resolved = FuturesUnordered :: new ( ) ;
204- for entry in node. public_overlay ( ) . read_entries ( ) . iter ( ) {
215+ for entry in node. overlay_client ( ) . overlay ( ) . read_entries ( ) . iter ( ) {
205216 let handle = entry. resolver_handle . clone ( ) ;
206217 resolved. push ( async move { handle. wait_resolved ( ) . await } ) ;
207218 }
0 commit comments