diff --git a/Cargo.toml b/Cargo.toml index 6560766..901ed0a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -62,7 +62,7 @@ serde = "1.0.0" serde_json = "1.0.0" # Akamai example -tokio-core = "0.1" +tokio = "0.1.8" env_logger = { version = "0.5.3", default-features = false } rustls = "0.12" tokio-rustls = "0.5.0" diff --git a/examples/akamai.rs b/examples/akamai.rs index 9ffef7e..5f4025d 100644 --- a/examples/akamai.rs +++ b/examples/akamai.rs @@ -3,7 +3,7 @@ extern crate futures; extern crate h2; extern crate http; extern crate rustls; -extern crate tokio_core; +extern crate tokio; extern crate tokio_rustls; extern crate webpki; extern crate webpki_roots; @@ -13,8 +13,7 @@ use h2::client; use futures::*; use http::{Method, Request}; -use tokio_core::net::TcpStream; -use tokio_core::reactor; +use tokio::net::TcpStream; use rustls::Session; use tokio_rustls::ClientConfigExt; @@ -44,13 +43,10 @@ pub fn main() { println!("ADDR: {:?}", addr); - let mut core = reactor::Core::new().unwrap(); - let handle = core.handle(); - - let tcp = TcpStream::connect(&addr, &handle); + let tcp = TcpStream::connect(&addr); let dns_name = DNSNameRef::try_from_ascii_str("http2.akamai.com").unwrap(); - let tcp = tcp.then(|res| { + let tcp = tcp.then(move |res| { let tcp = res.unwrap(); tls_client_config .connect_async(dns_name, tcp) @@ -87,7 +83,9 @@ pub fn main() { h2.join(stream) }) - }); + }) + .map_err(|e| eprintln!("ERROR: {:?}", e)) + .map(|((), ())| ()); - core.run(tcp).unwrap(); + tokio::run(tcp); } diff --git a/examples/client.rs b/examples/client.rs index 8a0d03a..960504e 100644 --- a/examples/client.rs +++ b/examples/client.rs @@ -2,7 +2,7 @@ extern crate env_logger; extern crate futures; extern crate h2; extern crate http; -extern crate tokio_core; +extern crate tokio; use h2::client; use h2::RecvStream; @@ -10,8 +10,7 @@ use h2::RecvStream; use futures::*; use http::*; -use tokio_core::net::TcpStream; -use tokio_core::reactor; +use tokio::net::TcpStream; struct Process { body: RecvStream, @@ -47,10 +46,7 @@ impl Future for Process { pub fn main() { let _ = env_logger::try_init(); - let mut core = reactor::Core::new().unwrap(); - let handle = core.handle(); - - let tcp = TcpStream::connect(&"127.0.0.1:5928".parse().unwrap(), &handle); + let tcp = TcpStream::connect(&"127.0.0.1:5928".parse().unwrap()); let tcp = tcp.then(|res| { let tcp = res.unwrap(); @@ -74,7 +70,7 @@ pub fn main() { stream.send_trailers(trailers).unwrap(); // Spawn a task to run the conn... - handle.spawn(h2.map_err(|e| println!("GOT ERR={:?}", e))); + tokio::spawn(h2.map_err(|e| println!("GOT ERR={:?}", e))); response .and_then(|response| { @@ -93,5 +89,5 @@ pub fn main() { }) }); - core.run(tcp).unwrap(); + tokio::run(tcp); } diff --git a/examples/server.rs b/examples/server.rs index 6167e5e..da6d71e 100644 --- a/examples/server.rs +++ b/examples/server.rs @@ -3,7 +3,7 @@ extern crate env_logger; extern crate futures; extern crate h2; extern crate http; -extern crate tokio_core; +extern crate tokio; use h2::server; @@ -11,20 +11,16 @@ use bytes::*; use futures::*; use http::*; -use tokio_core::net::TcpListener; -use tokio_core::reactor; +use tokio::net::TcpListener; pub fn main() { let _ = env_logger::try_init(); - let mut core = reactor::Core::new().unwrap(); - let handle = core.handle(); - - let listener = TcpListener::bind(&"127.0.0.1:5928".parse().unwrap(), &handle).unwrap(); + let listener = TcpListener::bind(&"127.0.0.1:5928".parse().unwrap()).unwrap(); println!("listening on {:?}", listener.local_addr()); - let server = listener.incoming().for_each(move |(socket, _)| { + let server = listener.incoming().for_each(move |socket| { // let socket = io_dump::Dump::to_stdout(socket); let connection = server::handshake(socket) @@ -64,9 +60,10 @@ pub fn main() { Ok(()) }); - handle.spawn(connection); + tokio::spawn(Box::new(connection)); Ok(()) - }); + }) + .map_err(|e| eprintln!("accept error: {}", e)); - core.run(server).unwrap(); + tokio::run(server); } diff --git a/src/client.rs b/src/client.rs index bfd13ff..aaaaf63 100644 --- a/src/client.rs +++ b/src/client.rs @@ -68,27 +68,21 @@ //! extern crate futures; //! extern crate h2; //! extern crate http; -//! extern crate tokio_core; +//! extern crate tokio; //! //! use h2::client; //! //! use futures::*; -//! # use futures::future::ok; //! use http::*; //! -//! use tokio_core::net::TcpStream; -//! use tokio_core::reactor; +//! use tokio::net::TcpStream; //! //! pub fn main() { -//! let mut core = reactor::Core::new().unwrap(); -//! let handle = core.handle(); -//! //! let addr = "127.0.0.1:5928".parse().unwrap(); //! -//! core.run({ -//! # let _ = +//! tokio::run( //! // Establish TCP connection to the server. -//! TcpStream::connect(&addr, &handle) +//! TcpStream::connect(&addr) //! .map_err(|_| { //! panic!("failed to establish TCP connection") //! }) @@ -98,7 +92,7 @@ //! .map_err(|_| panic!("HTTP/2.0 connection failed")); //! //! // Spawn a new task to drive the connection state -//! handle.spawn(connection); +//! tokio::spawn(connection); //! //! // Wait until the `SendRequest` handle has available //! // capacity. @@ -139,9 +133,8 @@ //! }) //! }) //! }) -//! # ; -//! # ok::<_, ()>(()) -//! }).ok().expect("failed to perform HTTP/2.0 request"); +//! .map_err(|e| panic!("failed to perform HTTP/2.0 request: {:?}", e)) +//! ) //! } //! ``` //! diff --git a/src/server.rs b/src/server.rs index e07946e..124ae52 100644 --- a/src/server.rs +++ b/src/server.rs @@ -67,27 +67,23 @@ //! extern crate futures; //! extern crate h2; //! extern crate http; -//! extern crate tokio_core; +//! extern crate tokio; //! //! use futures::{Future, Stream}; //! # use futures::future::ok; //! use h2::server; //! use http::{Response, StatusCode}; -//! use tokio_core::reactor; -//! use tokio_core::net::TcpListener; +//! use tokio::net::TcpListener; //! //! pub fn main () { -//! let mut core = reactor::Core::new().unwrap(); -//! let handle = core.handle(); -//! //! let addr = "127.0.0.1:5928".parse().unwrap(); -//! let listener = TcpListener::bind(&addr, &handle).unwrap(); +//! let listener = TcpListener::bind(&addr,).unwrap(); //! -//! core.run({ +//! tokio::run({ //! // Accept all incoming TCP connections. -//! listener.incoming().for_each(move |(socket, _)| { +//! listener.incoming().for_each(move |socket| { //! // Spawn a new task to process each connection. -//! handle.spawn({ +//! tokio::spawn({ //! // Start the HTTP/2.0 connection handshake //! server::handshake(socket) //! .and_then(|h2| { @@ -114,8 +110,9 @@ //! //! Ok(()) //! }) -//! # .select(ok(())) -//! }).ok().expect("failed to run HTTP/2.0 server"); +//! .map_err(|e| panic!("failed to run HTTP/2.0 server: {:?}", e)) +//! # .select(ok(())).map(|_|()).map_err(|_|()) +//! }); //! } //! ``` //!