From f874c182a4ab03eea94af40d20bf75c5a64e918e Mon Sep 17 00:00:00 2001 From: Covertness <wuyingfengsui@gmail.com> Date: Sat, 12 Dec 2015 17:52:53 +0800 Subject: [PATCH] support windows --- Cargo.toml | 5 ++--- examples/client.rs | 3 ++- src/client.rs | 6 +++++- src/lib.rs | 1 - src/server.rs | 9 ++++----- 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 4bb3445..22ff7f1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coap" -version = "0.3.0" +version = "0.3.1" description = "A CoAP library" readme = "README.md" documentation = "http://covertness.github.io/coap-rs/coap/index.html" @@ -12,8 +12,7 @@ keywords = ["CoAP"] [dependencies] bincode = "0.3.0" rustc-serialize = "0.3" -bytes = "0.2.11" -mio = "0.4" +mio = "0.5" threadpool = "0.1" url = "0.2.36" num = "0.1" diff --git a/examples/client.rs b/examples/client.rs index 48f89e5..aa3d135 100644 --- a/examples/client.rs +++ b/examples/client.rs @@ -25,7 +25,8 @@ fn main() { }, Err(e) => { match e.kind() { - ErrorKind::WouldBlock => println!("Request timeout"), + ErrorKind::WouldBlock => println!("Request timeout"), // Unix + ErrorKind::TimedOut => println!("Request timeout"), // Windows _ => println!("Request error: {:?}", e), } } diff --git a/src/client.rs b/src/client.rs index 5d0f1c5..b2846ba 100644 --- a/src/client.rs +++ b/src/client.rs @@ -191,6 +191,10 @@ mod test { server.handle(request_handler).unwrap(); let error = CoAPClient::request_with_timeout("coap://127.0.0.1:5684/Rust", Some(Duration::new(1, 0))).unwrap_err(); - assert_eq!(error.kind(), ErrorKind::WouldBlock); + if cfg!(windows) { + assert_eq!(error.kind(), ErrorKind::TimedOut); + } else { + assert_eq!(error.kind(), ErrorKind::WouldBlock); + } } } \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index 0b09127..14fc6b9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -66,7 +66,6 @@ extern crate bincode; extern crate rustc_serialize; -extern crate bytes; extern crate mio; extern crate threadpool; extern crate url; diff --git a/src/server.rs b/src/server.rs index a47b7a9..9bdb9e4 100644 --- a/src/server.rs +++ b/src/server.rs @@ -7,7 +7,6 @@ use mio::udp::UdpSocket; use packet::Packet; use client::CoAPClient; use threadpool::ThreadPool; -use bytes::RingBuf; const DEFAULT_WORKER_NUM: usize = 4; @@ -51,12 +50,12 @@ impl<H: CoAPHandler + 'static> Handler for UdpHandler<H> { fn ready(&mut self, _: &mut EventLoop<UdpHandler<H>>, _: Token, events: EventSet) { if events.is_readable() { let coap_handler = self.coap_handler; - let mut buf = RingBuf::new(1500); + let mut buf = [0; 1500]; match self.socket.recv_from(&mut buf) { - Ok(Some(src)) => { + Ok(Some((nread, src))) => { self.thread_pool.execute(move || { - match Packet::from_bytes(buf.bytes()) { + match Packet::from_bytes(&buf[..nread]) { Ok(packet) => { let client = CoAPClient::new(src).unwrap(); coap_handler.handle(packet, client); @@ -112,7 +111,7 @@ impl CoAPServer { let thread = thread::spawn(move || { let thread_pool = ThreadPool::new(worker_num); let mut event_loop = EventLoop::new().unwrap(); - event_loop.register(&socket, Token(0)).unwrap(); + event_loop.register(&socket, Token(0), EventSet::readable(), PollOpt::edge()).unwrap(); tx.send(event_loop.channel()).unwrap(); -- GitLab