diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2013-10-22 08:51:44 -0700 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2013-10-24 14:22:35 -0700 |
| commit | d425218395b4a4dd7c6e4f3d680447efd2a3abc6 (patch) | |
| tree | 2fe3e4bd7ea85a77fa5213e2e1d7377df5fc1183 /src/libstd/rt/uv | |
| parent | b5a02e07845b9fb4bc9b09909bd996c874fa3eed (diff) | |
Bring io::signal up to date with changes to rt::rtio
Diffstat (limited to 'src/libstd/rt/uv')
| -rw-r--r-- | src/libstd/rt/uv/signal.rs | 57 | ||||
| -rw-r--r-- | src/libstd/rt/uv/uvio.rs | 4 |
2 files changed, 17 insertions, 44 deletions
diff --git a/src/libstd/rt/uv/signal.rs b/src/libstd/rt/uv/signal.rs index 70ea8e399d5..e51b7d90d95 100644 --- a/src/libstd/rt/uv/signal.rs +++ b/src/libstd/rt/uv/signal.rs @@ -10,12 +10,10 @@ use cast; use option::Some; -use libc::{c_int, c_void}; +use libc::c_int; use result::{Err, Ok, Result}; -use rt::io::IoError; use rt::io::signal::Signum; -use rt::uv::{Loop, NativeHandle, NullCallback, SignalCallback, UvError, Watcher}; -use rt::uv::uv_error_to_io_error; +use rt::uv::{Loop, NativeHandle, SignalCallback, UvError, Watcher}; use rt::uv::uvll; pub struct SignalWatcher(*uvll::uv_signal_t); @@ -34,19 +32,19 @@ impl SignalWatcher { } } - pub fn start(&mut self, signum: Signum, callback: SignalCallback) -> Result<(), IoError> { - { - let data = self.get_watcher_data(); - data.signal_cb = Some(callback); - } - - let ret = unsafe { - uvll::signal_start(self.native_handle(), signal_cb, signum as c_int) - }; - - return match ret { - 0 => Ok(()), - _ => Err(uv_error_to_io_error(UvError(ret))), + pub fn start(&mut self, signum: Signum, callback: SignalCallback) + -> Result<(), UvError> + { + return unsafe { + match uvll::signal_start(self.native_handle(), signal_cb, + signum as c_int) { + 0 => { + let data = self.get_watcher_data(); + data.signal_cb = Some(callback); + Ok(()) + } + n => Err(UvError(n)), + } }; extern fn signal_cb(handle: *uvll::uv_signal_t, signum: c_int) { @@ -62,31 +60,6 @@ impl SignalWatcher { uvll::signal_stop(self.native_handle()); } } - - pub fn close(self, cb: NullCallback) { - let mut watcher = self; - { - let data = watcher.get_watcher_data(); - assert!(data.close_cb.is_none()); - data.close_cb = Some(cb); - } - - unsafe { - uvll::close(watcher.native_handle(), close_cb); - } - - extern fn close_cb(handle: *uvll::uv_signal_t) { - let mut watcher: SignalWatcher = NativeHandle::from_native_handle(handle); - { - let data = watcher.get_watcher_data(); - data.close_cb.take_unwrap()(); - } - watcher.drop_watcher_data(); - unsafe { - uvll::free_handle(handle as *c_void); - } - } - } } impl NativeHandle<*uvll::uv_signal_t> for SignalWatcher { diff --git a/src/libstd/rt/uv/uvio.rs b/src/libstd/rt/uv/uvio.rs index 48f4dbe43d6..473eec32c67 100644 --- a/src/libstd/rt/uv/uvio.rs +++ b/src/libstd/rt/uv/uvio.rs @@ -865,12 +865,12 @@ impl IoFactory for UvIoFactory { } fn signal(&mut self, signum: Signum, channel: SharedChan<Signum>) - -> Result<~RtioSignalObject, IoError> { + -> Result<~RtioSignal, IoError> { let watcher = SignalWatcher::new(self.uv_loop()); let home = get_handle_to_current_scheduler!(); let mut signal = ~UvSignal::new(watcher, home); match signal.watcher.start(signum, |_, _| channel.send_deferred(signum)) { - Ok(()) => Ok(signal), + Ok(()) => Ok(signal as ~RtioSignal), Err(e) => Err(uv_error_to_io_error(e)), } } |
