diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2013-08-18 17:11:45 -0700 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2013-08-27 20:46:17 -0700 |
| commit | ed204257a0c6abc8386879bb631471ec17d8a96a (patch) | |
| tree | 72e84f91fd63865d0443c0a0e9c46fa9d2ffbbbc /src/libstd/rt/uv/mod.rs | |
| parent | 578e68047736167239c52fa1aba0347011ff1bc3 (diff) | |
Upgrade libuv to the current master + our patches
There were two main differences with the old libuv and the master version: 1. The uv_last_error function is now gone. The error code returned by each function is the "last error" so now a UvError is just a wrapper around a c_int. 2. The repo no longer includes a makefile, and the build system has change. According to the build directions on joyent/libuv, this now downloads a `gyp` program into the `libuv/build` directory and builds using that. This shouldn't add any dependences on autotools or anything like that. Closes #8407 Closes #6567 Closes #6315
Diffstat (limited to 'src/libstd/rt/uv/mod.rs')
| -rw-r--r-- | src/libstd/rt/uv/mod.rs | 53 |
1 files changed, 14 insertions, 39 deletions
diff --git a/src/libstd/rt/uv/mod.rs b/src/libstd/rt/uv/mod.rs index 75b9a5ac553..5a592b92a38 100644 --- a/src/libstd/rt/uv/mod.rs +++ b/src/libstd/rt/uv/mod.rs @@ -202,12 +202,12 @@ impl<H, W: Watcher + NativeHandle<*H>> WatcherInterop for W { // XXX: Need to define the error constants like EOF so they can be // compared to the UvError type -pub struct UvError(uvll::uv_err_t); +pub struct UvError(c_int); impl UvError { pub fn name(&self) -> ~str { unsafe { - let inner = match self { &UvError(ref a) => a }; + let inner = match self { &UvError(a) => a }; let name_str = uvll::err_name(inner); assert!(name_str.is_not_null()); from_c_str(name_str) @@ -216,7 +216,7 @@ impl UvError { pub fn desc(&self) -> ~str { unsafe { - let inner = match self { &UvError(ref a) => a }; + let inner = match self { &UvError(a) => a }; let desc_str = uvll::strerror(inner); assert!(desc_str.is_not_null()); from_c_str(desc_str) @@ -224,7 +224,7 @@ impl UvError { } pub fn is_eof(&self) -> bool { - self.code == uvll::EOF + **self == uvll::EOF } } @@ -236,18 +236,10 @@ impl ToStr for UvError { #[test] fn error_smoke_test() { - let err = uvll::uv_err_t { code: 1, sys_errno_: 1 }; - let err: UvError = UvError(err); + let err: UvError = UvError(uvll::EOF); assert_eq!(err.to_str(), ~"EOF: end of file"); } -pub fn last_uv_error<H, W: Watcher + NativeHandle<*H>>(watcher: &W) -> UvError { - unsafe { - let loop_ = watcher.event_loop(); - UvError(uvll::last_error(loop_.native_handle())) - } -} - pub fn uv_error_to_io_error(uverr: UvError) -> IoError { unsafe { // Importing error constants @@ -255,10 +247,10 @@ pub fn uv_error_to_io_error(uverr: UvError) -> IoError { use rt::io::*; // uv error descriptions are static - let c_desc = uvll::strerror(&*uverr); + let c_desc = uvll::strerror(*uverr); let desc = str::raw::c_str_to_static_slice(c_desc); - let kind = match uverr.code { + let kind = match *uverr { UNKNOWN => OtherIoError, OK => OtherIoError, EOF => EndOfFile, @@ -266,8 +258,8 @@ pub fn uv_error_to_io_error(uverr: UvError) -> IoError { ECONNREFUSED => ConnectionRefused, ECONNRESET => ConnectionReset, EPIPE => BrokenPipe, - _ => { - rtdebug!("uverr.code %u", uverr.code as uint); + err => { + rtdebug!("uverr.code %d", err as int); // XXX: Need to map remaining uv error types OtherIoError } @@ -282,30 +274,13 @@ pub fn uv_error_to_io_error(uverr: UvError) -> IoError { } /// Given a uv handle, convert a callback status to a UvError -pub fn status_to_maybe_uv_error_with_loop( - loop_: *uvll::uv_loop_t, - status: c_int) -> Option<UvError> { - if status != -1 { +pub fn status_to_maybe_uv_error<T, U: Watcher + NativeHandle<*T>>( + handle: U, status: c_int) -> Option<UvError> +{ + if status >= 0 { None } else { - unsafe { - rtdebug!("loop: %x", loop_ as uint); - let err = uvll::last_error(loop_); - Some(UvError(err)) - } - } -} -/// Given a uv handle, convert a callback status to a UvError -pub fn status_to_maybe_uv_error<T, U: Watcher + NativeHandle<*T>>(handle: U, - status: c_int) -> Option<UvError> { - if status != -1 { - None - } else { - unsafe { - rtdebug!("handle: %x", handle.native_handle() as uint); - let loop_ = uvll::get_loop_for_uv_handle(handle.native_handle()); - status_to_maybe_uv_error_with_loop(loop_, status) - } + Some(UvError(status)) } } |
