diff options
| author | Eric Reed <ereed@mozilla.com> | 2013-06-25 17:04:28 -0700 |
|---|---|---|
| committer | Eric Reed <ereed@mozilla.com> | 2013-06-25 17:04:28 -0700 |
| commit | f60468629566ae896e90039f89ef5bb63f920aef (patch) | |
| tree | 34a8200e9f99e4785961c6a07a930c260c5b6ee5 /src/libstd | |
| parent | c5b19f0bf9c2f32f368b0f2565a06ae0271a96c1 (diff) | |
| download | rust-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.rs | 19 |
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(()), |
