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 use libc::c_int; 13 14 use {TcpBuilder, UdpBuilder, FromInner, AsInner}; 15 use socket::Socket; 16 use sys; 17 18 impl FromRawFd for TcpBuilder { from_raw_fd(fd: c_int) -> TcpBuilder19 unsafe fn from_raw_fd(fd: c_int) -> TcpBuilder { 20 let sock = sys::Socket::from_inner(fd); 21 TcpBuilder::from_inner(Socket::from_inner(sock)) 22 } 23 } 24 25 impl AsRawFd for TcpBuilder { as_raw_fd(&self) -> c_int26 fn as_raw_fd(&self) -> c_int { 27 // TODO: this unwrap() is very bad 28 self.as_inner().borrow().as_ref().unwrap().as_inner().raw() 29 } 30 } 31 32 impl FromRawFd for UdpBuilder { from_raw_fd(fd: c_int) -> UdpBuilder33 unsafe fn from_raw_fd(fd: c_int) -> UdpBuilder { 34 let sock = sys::Socket::from_inner(fd); 35 UdpBuilder::from_inner(Socket::from_inner(sock)) 36 } 37 } 38 39 impl AsRawFd for UdpBuilder { as_raw_fd(&self) -> c_int40 fn as_raw_fd(&self) -> c_int { 41 // TODO: this unwrap() is very bad 42 self.as_inner().borrow().as_ref().unwrap().as_inner().raw() 43 } 44 } 45