1 // Copyright 2015 The Rust Project Developers. See the COPYRIGHT 2 // file at the top-level directory of this distribution and at 3 // http://rust-lang.org/COPYRIGHT. 4 // 5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or 6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license 7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your 8 // option. This file may not be copied, modified, or distributed 9 // except according to those terms. 10 11 use std::os::unix::io::{FromRawFd, AsRawFd}; 12 13 use {TcpBuilder, UdpBuilder, FromInner, AsInner}; 14 use socket::Socket; 15 use sys; 16 17 impl FromRawFd for TcpBuilder { from_raw_fd(fd: usize) -> TcpBuilder18 unsafe fn from_raw_fd(fd: usize) -> TcpBuilder { 19 let sock = sys::Socket::from_inner(fd); 20 TcpBuilder::from_inner(Socket::from_inner(sock)) 21 } 22 } 23 24 impl AsRawFd for TcpBuilder { as_raw_fd(&self) -> usize25 fn as_raw_fd(&self) -> usize { 26 // TODO: this unwrap() is very bad 27 self.as_inner().borrow().as_ref().unwrap().as_inner().raw() as usize 28 } 29 } 30 31 impl FromRawFd for UdpBuilder { from_raw_fd(fd: usize) -> UdpBuilder32 unsafe fn from_raw_fd(fd: usize) -> UdpBuilder { 33 let sock = sys::Socket::from_inner(fd); 34 UdpBuilder::from_inner(Socket::from_inner(sock)) 35 } 36 } 37 38 impl AsRawFd for UdpBuilder { as_raw_fd(&self) -> usize39 fn as_raw_fd(&self) -> usize { 40 // TODO: this unwrap() is very bad 41 self.as_inner().borrow().as_ref().unwrap().as_inner().raw() as usize 42 } 43 } 44