Skip to content

Commit 2f9d54b

Browse files
committed
refactor(dht): refactor dht server example
1 parent 6330261 commit 2f9d54b

File tree

1 file changed

+17
-27
lines changed

1 file changed

+17
-27
lines changed

examples/dht_server.rs

Lines changed: 17 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -226,36 +226,32 @@ fn main() {
226226
err
227227
});
228228

229-
let server: IoFuture<()> = Box::new(network);
230-
let server = add_server_main_loop(server, &server_obj);
231-
let server = add_onion_key_refresher(server, &server_obj);
232-
let server = server.join(run_lan_discovery_sender(lan_discovery_sender)).map(|_| ());
233-
let server = server.join(dht_pk_handler).map(|_| ());
234-
let server = server.join(lossless_handler).map(|_| ());
235-
let server = server.join(lossy_handler).map(|_| ());
236-
237-
let server = server
238-
.map(|_| ())
239-
.map_err(move |err| {
240-
error!("Processing ended with error: {:?}", err);
241-
()
242-
});
229+
let server: IoFuture<()> = Box::new(network); // TODO: remove these boxes on rustc 1.26
230+
let server: IoFuture<()> = Box::new(server.select(run_server(&server_obj)).map(|_| ()).map_err(|(e, _)| e));
231+
let server: IoFuture<()> = Box::new(server.select(run_lan_discovery_sender(lan_discovery_sender)).map(|_| ()).map_err(|(e, _)| e));
232+
let server: IoFuture<()> = Box::new(server.select(dht_pk_handler).map(|_| ()).map_err(|(e, _)| e));
233+
let server: IoFuture<()> = Box::new(server.select(lossless_handler).map(|_| ()).map_err(|(e, _)| e));
234+
let server: IoFuture<()> = Box::new(server.select(lossy_handler).map(|_| ()).map_err(|(e, _)| e));
235+
236+
let server = server.map_err(move |err| {
237+
error!("Processing ended with error: {:?}", err);
238+
()
239+
});
243240

244241
info!("server running on localhost:12345");
245242
tokio::run(server);
246243
}
247244

248-
fn add_server_main_loop(base_selector: IoFuture<()>, server_obj: &Server) -> IoFuture<()> {
249-
// 20 seconds for NodesRequest
245+
fn run_server(server_obj: &Server) -> IoFuture<()> {
250246
let interval = Duration::from_secs(1);
251-
let nodes_wakeups = Interval::new(Instant::now() + interval, interval);
247+
let dht_wakeups = Interval::new(Instant::now(), interval);
252248
let mut server_obj_c = server_obj.clone();
253249
let mut bootstrap_fast: bool = false;
254250

255-
let nodes_sender = nodes_wakeups
251+
let future = dht_wakeups
256252
.map_err(|e| Error::new(ErrorKind::Other, format!("Nodes timer error: {:?}", e)))
257253
.for_each(move |_instant| {
258-
println!("main_loop_wakeup");
254+
trace!("DHT server wake up");
259255
// flag for fast bootstrapping
260256
if bootstrap_fast {
261257
server_obj_c.dht_main_loop()
@@ -290,15 +286,9 @@ fn add_server_main_loop(base_selector: IoFuture<()>, server_obj: &Server) -> IoF
290286

291287
res
292288
}
293-
})
294-
.map_err(|_err| Error::new(ErrorKind::Other, "Nodes timer error"));
289+
});
295290

296-
Box::new(base_selector.select(Box::new(nodes_sender))
297-
.map(|_| ())
298-
.map_err(move |(err, _select_next)| {
299-
error!("Processing ended with error: {:?}", err);
300-
err
301-
}))
291+
Box::new(future)
302292
}
303293

304294
fn run_lan_discovery_sender(mut lan_discovery_sender: LanDiscoverySender) -> IoFuture<()> {

0 commit comments

Comments
 (0)