about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorEric Reed <ereed@mozilla.com>2013-06-25 17:04:28 -0700
committerEric Reed <ereed@mozilla.com>2013-06-25 17:04:28 -0700
commitf60468629566ae896e90039f89ef5bb63f920aef (patch)
tree34a8200e9f99e4785961c6a07a930c260c5b6ee5 /src/libstd
parentc5b19f0bf9c2f32f368b0f2565a06ae0271a96c1 (diff)
downloadrust-f60468629566ae896e90039f89ef5bb63f920aef.tar.gz
rust-f60468629566ae896e90039f89ef5bb63f920aef.zip
converted UvUdpSocket into a newtype struct
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/rt/uv/uvio.rs19
1 files changed, 5 insertions, 14 deletions
diff --git a/src/libstd/rt/uv/uvio.rs b/src/libstd/rt/uv/uvio.rs
index 6b4cb66ed99..905087103fc 100644
--- a/src/libstd/rt/uv/uvio.rs
+++ b/src/libstd/rt/uv/uvio.rs
@@ -264,7 +264,7 @@ impl IoFactory for UvIoFactory {
     fn udp_bind(&mut self, addr: IpAddr) -> Result<~RtioUdpSocketObject, IoError> {
         let /*mut*/ watcher = UdpWatcher::new(self.uv_loop());
         match watcher.bind(addr) {
-            Ok(_) => Ok(~UvUdpSocket { watcher: watcher }),
+            Ok(_) => Ok(~UvUdpSocket(watcher)),
             Err(uverr) => {
                 let scheduler = Local::take::<Scheduler>();
                 do scheduler.deschedule_running_task_and_then |_, task| {
@@ -451,22 +451,15 @@ impl RtioTcpStream for UvTcpStream {
     }
 }
 
-pub struct UvUdpSocket {
-    watcher: UdpWatcher
-}
-
-impl UvUdpSocket {
-    fn watcher(&self) -> UdpWatcher { self.watcher }
-}
+pub struct UvUdpSocket(UdpWatcher);
 
 impl Drop for UvUdpSocket {
     fn finalize(&self) {
         rtdebug!("closing udp socket");
-        let watcher = self.watcher();
         let scheduler = Local::take::<Scheduler>();
         do scheduler.deschedule_running_task_and_then |_, task| {
             let task_cell = Cell::new(task);
-            do watcher.close {
+            do self.close {
                 let scheduler = Local::take::<Scheduler>();
                 scheduler.resume_task_immediately(task_cell.take());
             }
@@ -481,14 +474,13 @@ impl RtioUdpSocket for UvUdpSocket {
 
         let scheduler = Local::take::<Scheduler>();
         assert!(scheduler.in_task_context());
-        let watcher = self.watcher();
         let buf_ptr: *&mut [u8] = &buf;
         do scheduler.deschedule_running_task_and_then |sched, task| {
             rtdebug!("recvfrom: entered scheduler context");
             assert!(!sched.in_task_context());
             let task_cell = Cell::new(task);
             let alloc: AllocCallback = |_| unsafe { slice_to_uv_buf(*buf_ptr) };
-            do watcher.recv_start(alloc) |watcher, nread, _buf, addr, flags, status| {
+            do self.recv_start(alloc) |watcher, nread, _buf, addr, flags, status| {
                 let _ = flags; // NOTE add handling for partials?
 
                 watcher.recv_stop();
@@ -517,12 +509,11 @@ impl RtioUdpSocket for UvUdpSocket {
         let result_cell_ptr: *Cell<Result<(), IoError>> = &result_cell;
         let scheduler = Local::take::<Scheduler>();
         assert!(scheduler.in_task_context());
-        let watcher = self.watcher();
         let buf_ptr: *&[u8] = &buf;
         do scheduler.deschedule_running_task_and_then |_, task| {
             let task_cell = Cell::new(task);
             let buf = unsafe { slice_to_uv_buf(*buf_ptr) };
-            do watcher.send(buf, dst) |_watcher, status| {
+            do self.send(buf, dst) |_watcher, status| {
 
                 let result = match status {
                     None => Ok(()),