summaryrefslogtreecommitdiff
path: root/src/sys/socket.rs
diff options
context:
space:
mode:
authorUtkarsh Kukreti <utkarshkukreti@gmail.com>2015-02-10 12:10:57 +0530
committerCarl Lerche <me@carllerche.com>2015-02-10 22:34:13 -0800
commiteffb423fdb26843612edca6a748e479522089c1d (patch)
treea2ca4f77d2bfd158f42d8a90cd4b4c2df371037d /src/sys/socket.rs
parent51becf70d23c1ac6184921fb729fd61324538ddc (diff)
downloadnix-effb423fdb26843612edca6a748e479522089c1d.zip
Add `NixPath`, `NixError`, and `NixResult`.
Diffstat (limited to 'src/sys/socket.rs')
-rw-r--r--src/sys/socket.rs53
1 files changed, 27 insertions, 26 deletions
diff --git a/src/sys/socket.rs b/src/sys/socket.rs
index b26f909c..b462570d 100644
--- a/src/sys/socket.rs
+++ b/src/sys/socket.rs
@@ -1,9 +1,10 @@
use std::{mem, ptr, fmt};
use libc::{c_void, c_int, socklen_t, size_t, ssize_t};
+use errno::Errno;
use fcntl::{Fd, fcntl, FD_CLOEXEC, O_NONBLOCK};
use fcntl::FcntlArg::{F_SETFD, F_SETFL};
-use errno::{SysResult, SysError, from_ffi};
use features;
+use {NixError, NixResult, from_ffi};
pub use libc::{in_addr, sockaddr, sockaddr_storage, sockaddr_in, sockaddr_in6, sockaddr_un, sa_family_t, ip_mreq};
@@ -225,7 +226,7 @@ mod consts {
pub const MSG_DONTWAIT: SockMessageFlags = 0x80;
}
-pub fn socket(domain: AddressFamily, mut ty: SockType, flags: SockFlag) -> SysResult<Fd> {
+pub fn socket(domain: AddressFamily, mut ty: SockType, flags: SockFlag) -> NixResult<Fd> {
let feat_atomic = features::socket_atomic_cloexec();
if feat_atomic {
@@ -236,7 +237,7 @@ pub fn socket(domain: AddressFamily, mut ty: SockType, flags: SockFlag) -> SysRe
let res = unsafe { ffi::socket(domain, ty, 0) };
if res < 0 {
- return Err(SysError::last());
+ return Err(NixError::Sys(Errno::last()));
}
if !feat_atomic {
@@ -252,12 +253,12 @@ pub fn socket(domain: AddressFamily, mut ty: SockType, flags: SockFlag) -> SysRe
Ok(res)
}
-pub fn listen(sockfd: Fd, backlog: usize) -> SysResult<()> {
+pub fn listen(sockfd: Fd, backlog: usize) -> NixResult<()> {
let res = unsafe { ffi::listen(sockfd, backlog as c_int) };
from_ffi(res)
}
-pub fn bind(sockfd: Fd, addr: &SockAddr) -> SysResult<()> {
+pub fn bind(sockfd: Fd, addr: &SockAddr) -> NixResult<()> {
use self::SockAddr::*;
let res = unsafe {
@@ -271,18 +272,18 @@ pub fn bind(sockfd: Fd, addr: &SockAddr) -> SysResult<()> {
from_ffi(res)
}
-pub fn accept(sockfd: Fd) -> SysResult<Fd> {
+pub fn accept(sockfd: Fd) -> NixResult<Fd> {
let res = unsafe { ffi::accept(sockfd, ptr::null_mut(), ptr::null_mut()) };
if res < 0 {
- return Err(SysError::last());
+ return Err(NixError::Sys(Errno::last()));
}
Ok(res)
}
#[cfg(not(any(target_os = "macos", target_os = "ios")))]
-pub fn accept4(sockfd: Fd, flags: SockFlag) -> SysResult<Fd> {
+pub fn accept4(sockfd: Fd, flags: SockFlag) -> NixResult<Fd> {
use libc::sockaddr;
type F = unsafe extern "C" fn(c_int, *mut sockaddr, *mut socklen_t, c_int) -> c_int;
@@ -299,7 +300,7 @@ pub fn accept4(sockfd: Fd, flags: SockFlag) -> SysResult<Fd> {
};
if res < 0 {
- return Err(SysError::last());
+ return Err(NixError::Sys(Errno::last()));
}
Ok(res)
@@ -309,16 +310,16 @@ pub fn accept4(sockfd: Fd, flags: SockFlag) -> SysResult<Fd> {
}
#[cfg(any(target_os = "macos", target_os = "ios"))]
-pub fn accept4(sockfd: Fd, flags: SockFlag) -> SysResult<Fd> {
+pub fn accept4(sockfd: Fd, flags: SockFlag) -> NixResult<Fd> {
accept4_polyfill(sockfd, flags)
}
#[inline]
-fn accept4_polyfill(sockfd: Fd, flags: SockFlag) -> SysResult<Fd> {
+fn accept4_polyfill(sockfd: Fd, flags: SockFlag) -> NixResult<Fd> {
let res = unsafe { ffi::accept(sockfd, ptr::null_mut(), ptr::null_mut()) };
if res < 0 {
- return Err(SysError::last());
+ return Err(NixError::Sys(Errno::last()));
}
if flags.contains(SOCK_CLOEXEC) {
@@ -332,7 +333,7 @@ fn accept4_polyfill(sockfd: Fd, flags: SockFlag) -> SysResult<Fd> {
Ok(res)
}
-pub fn connect(sockfd: Fd, addr: &SockAddr) -> SysResult<()> {
+pub fn connect(sockfd: Fd, addr: &SockAddr) -> NixResult<()> {
use self::SockAddr::*;
let res = unsafe {
@@ -368,7 +369,7 @@ mod sa_helpers {
}
}
-pub fn recvfrom(sockfd: Fd, buf: &mut [u8]) -> SysResult<(usize, SockAddr)> {
+pub fn recvfrom(sockfd: Fd, buf: &mut [u8]) -> NixResult<(usize, SockAddr)> {
let saddr : sockaddr_storage = unsafe { mem::zeroed() };
let mut len = mem::size_of::<sockaddr_storage>() as socklen_t;
@@ -377,7 +378,7 @@ pub fn recvfrom(sockfd: Fd, buf: &mut [u8]) -> SysResult<(usize, SockAddr)> {
};
if ret < 0 {
- return Err(SysError::last());
+ return Err(NixError::Sys(Errno::last()));
}
Ok((ret as usize,
@@ -427,7 +428,7 @@ fn sendto_sockaddr<T>(sockfd: Fd, buf: &[u8], flags: SockMessageFlags, addr: &T)
}
}
-pub fn sendto(sockfd: Fd, buf: &[u8], addr: &SockAddr, flags: SockMessageFlags) -> SysResult<usize> {
+pub fn sendto(sockfd: Fd, buf: &[u8], addr: &SockAddr, flags: SockMessageFlags) -> NixResult<usize> {
use self::SockAddr::*;
let ret = match *addr {
@@ -437,7 +438,7 @@ pub fn sendto(sockfd: Fd, buf: &[u8], addr: &SockAddr, flags: SockMessageFlags)
};
if ret < 0 {
- Err(SysError::last())
+ Err(NixError::Sys(Errno::last()))
} else {
Ok(ret as usize)
}
@@ -450,7 +451,7 @@ pub struct linger {
pub l_linger: c_int
}
-pub fn getsockopt<T>(fd: Fd, level: SockLevel, opt: SockOpt, val: &mut T) -> SysResult<usize> {
+pub fn getsockopt<T>(fd: Fd, level: SockLevel, opt: SockOpt, val: &mut T) -> NixResult<usize> {
let mut len = mem::size_of::<T>() as socklen_t;
let res = unsafe {
@@ -461,13 +462,13 @@ pub fn getsockopt<T>(fd: Fd, level: SockLevel, opt: SockOpt, val: &mut T) -> Sys
};
if res < 0 {
- return Err(SysError::last());
+ return Err(NixError::Sys(Errno::last()));
}
Ok(len as usize)
}
-pub fn setsockopt<T>(fd: Fd, level: SockLevel, opt: SockOpt, val: &T) -> SysResult<()> {
+pub fn setsockopt<T>(fd: Fd, level: SockLevel, opt: SockOpt, val: &T) -> NixResult<()> {
let len = mem::size_of::<T>() as socklen_t;
let res = unsafe {
@@ -480,19 +481,19 @@ pub fn setsockopt<T>(fd: Fd, level: SockLevel, opt: SockOpt, val: &T) -> SysResu
from_ffi(res)
}
-fn getpeername_sockaddr<T>(sockfd: Fd, addr: &T) -> SysResult<bool> {
+fn getpeername_sockaddr<T>(sockfd: Fd, addr: &T) -> NixResult<bool> {
let addrlen_expected = mem::size_of::<T>() as socklen_t;
let mut addrlen = addrlen_expected;
let ret = unsafe { ffi::getpeername(sockfd, mem::transmute(addr), &mut addrlen) };
if ret < 0 {
- return Err(SysError::last());
+ return Err(NixError::Sys(Errno::last()));
}
Ok(addrlen == addrlen_expected)
}
-pub fn getpeername(sockfd: Fd, addr: &mut SockAddr) -> SysResult<bool> {
+pub fn getpeername(sockfd: Fd, addr: &mut SockAddr) -> NixResult<bool> {
use self::SockAddr::*;
match *addr {
@@ -502,19 +503,19 @@ pub fn getpeername(sockfd: Fd, addr: &mut SockAddr) -> SysResult<bool> {
}
}
-fn getsockname_sockaddr<T>(sockfd: Fd, addr: &T) -> SysResult<bool> {
+fn getsockname_sockaddr<T>(sockfd: Fd, addr: &T) -> NixResult<bool> {
let addrlen_expected = mem::size_of::<T>() as socklen_t;
let mut addrlen = addrlen_expected;
let ret = unsafe { ffi::getsockname(sockfd, mem::transmute(addr), &mut addrlen) };
if ret < 0 {
- return Err(SysError::last());
+ return Err(NixError::Sys(Errno::last()));
}
Ok(addrlen == addrlen_expected)
}
-pub fn getsockname(sockfd: Fd, addr: &mut SockAddr) -> SysResult<bool> {
+pub fn getsockname(sockfd: Fd, addr: &mut SockAddr) -> NixResult<bool> {
use self::SockAddr::*;
match *addr {