about summary refs log tree commit diff
path: root/src/libstd/rt/uv
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2013-10-22 08:51:44 -0700
committerAlex Crichton <alex@alexcrichton.com>2013-10-24 14:22:35 -0700
commitd425218395b4a4dd7c6e4f3d680447efd2a3abc6 (patch)
tree2fe3e4bd7ea85a77fa5213e2e1d7377df5fc1183 /src/libstd/rt/uv
parentb5a02e07845b9fb4bc9b09909bd996c874fa3eed (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.rs57
-rw-r--r--src/libstd/rt/uv/uvio.rs4
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)),
         }
     }