Skip to content

Commit ccf6d00

Browse files
authored
Merge pull request #65 from tox-rs/move_to_tokio
Move to tokio
2 parents c1d41dc + e2a7f5e commit ccf6d00

File tree

2 files changed

+147
-93
lines changed

2 files changed

+147
-93
lines changed

examples/dht_node.rs

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ extern crate tox;
2626
extern crate futures;
2727
extern crate futures_timer;
2828
extern crate tokio;
29-
extern crate tokio_core;
3029
extern crate tokio_io;
3130
extern crate rustc_serialize;
3231

@@ -37,12 +36,9 @@ extern crate env_logger;
3736
use futures::*;
3837
use futures::sync::mpsc;
3938
use futures_timer::Interval;
40-
use tokio_core::reactor::Core;
4139
use tokio::net::{UdpSocket, UdpFramed};
4240

43-
use std::cell::RefCell;
4441
use std::net::SocketAddr;
45-
use std::rc::Rc;
4642
use std::io::{ErrorKind, Error};
4743
use std::time::*;
4844
use rustc_serialize::hex::FromHex;
@@ -65,14 +61,12 @@ fn main() {
6561

6662
let local: SocketAddr = "0.0.0.0:33445".parse().unwrap();
6763

68-
let mut core = Core::new().unwrap();
69-
7064
// Bind a UDP listener to the socket address.
7165
let socket = UdpSocket::bind(&local).unwrap();
7266

7367
// Create a channel for this socket
7468
let (tx, rx) = mpsc::unbounded::<(DhtPacket, SocketAddr)>();
75-
let server_obj = Rc::new(RefCell::new(Server::new(tx, pk, sk)));
69+
let server_obj = Server::new(tx, pk, sk);
7670

7771
// get PK bytes of some "random" bootstrap node (Impyy's)
7872
let bootstrap_pk_bytes = FromHex::from_hex(
@@ -81,18 +75,17 @@ fn main() {
8175
// create PK from bytes
8276
let bootstrap_pk = PublicKey::from_slice(&bootstrap_pk_bytes).unwrap();
8377

84-
//"51.15.37.145:33445".parse().unwrap()
8578
let saddr: SocketAddr = "198.98.51.198:33445".parse().unwrap();
8679
let bootstrap_pn = PackedNode::new(true, saddr, &bootstrap_pk);
87-
assert!(server_obj.borrow_mut().kbucket.try_add(&bootstrap_pn));
80+
assert!(server_obj.try_add_to_kbucket(&bootstrap_pn));
8881

8982
let (sink, stream) = UdpFramed::new(socket, DhtCodec).split();
9083
// The server task asynchronously iterates over and processes each
9184
// incoming packet.
9285
let server_obj_c = server_obj.clone();
9386
let handler = stream.for_each(move |(packet, addr)| {
9487
println!("recv = {:?}", packet.clone());
95-
let _ = server_obj_c.borrow_mut().handle_packet((packet, addr));
88+
let _ = server_obj_c.handle_packet((packet, addr));
9689
Ok(())
9790
})
9891
.map_err(|err| {
@@ -126,33 +119,36 @@ fn main() {
126119

127120
let server_obj_c = server_obj.clone();
128121
let ping_sender = ping_wakeups.for_each(move |()| {
129-
server_obj_c.borrow_mut().send_pings()
122+
println!("ping_wakeup");
123+
server_obj_c.send_pings()
130124
})
131125
.map_err(|_err| Error::new(ErrorKind::Other, "Ping timer error"));
132126

133127
// 20 seconds for NodesRequest
134128
let nodes_wakeups = Interval::new(Duration::from_secs(20));
135129
let server_obj_c = server_obj.clone();
136130
let nodes_sender = nodes_wakeups.for_each(move |()| {
131+
println!("nodes_wakeup");
137132
let friend_pk = PublicKey([15, 107, 126, 130, 81, 55, 154, 157,
138133
192, 117, 0, 225, 119, 43, 48, 117,
139134
84, 109, 112, 57, 243, 216, 4, 171,
140135
185, 111, 33, 146, 221, 31, 77, 118]);
141-
server_obj_c.borrow_mut().send_nodes_req(friend_pk)
136+
server_obj_c.send_nodes_req(friend_pk)
142137
})
143138
.map_err(|_err| Error::new(ErrorKind::Other, "Nodes timer error"));
144139

145140
// 3 seconds for NatPingRequest
146141
let nat_wakeups = Interval::new(Duration::from_secs(3));
147142
let server_obj_c = server_obj.clone();
148143
let nat_sender = nat_wakeups.for_each(move |()| {
144+
println!("nat_wakeup");
149145
let peer_pk = gen_keypair().0;
150146
let node = PackedNode::new(false, SocketAddr::V4("127.0.0.1:33445".parse().unwrap()), &peer_pk.clone());
151147
let friend_pk = PublicKey([15, 107, 126, 130, 81, 55, 154, 157,
152148
192, 117, 0, 225, 119, 43, 48, 117,
153149
84, 109, 112, 57, 243, 216, 4, 171,
154150
185, 111, 33, 146, 221, 31, 77, 118]);
155-
server_obj_c.borrow_mut().send_nat_ping_req(node, friend_pk)
151+
server_obj_c.send_nat_ping_req(node, friend_pk)
156152
})
157153
.map_err(|_err| Error::new(ErrorKind::Other, "NatPing timer error"));
158154

@@ -173,9 +169,9 @@ fn main() {
173169
.map(|_| ())
174170
.map_err(move |(err, _select_next)| {
175171
error!("Processing ended with error: {:?}", err);
176-
err
172+
()
177173
});
178174

179175
info!("server running on localhost:12345");
180-
core.run(server).unwrap();
176+
tokio::run(server);
181177
}

0 commit comments

Comments
 (0)