summary refs log tree commit diff
path: root/msg_socket/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'msg_socket/src/lib.rs')
-rw-r--r--msg_socket/src/lib.rs26
1 files changed, 25 insertions, 1 deletions
diff --git a/msg_socket/src/lib.rs b/msg_socket/src/lib.rs
index e1a1b48..4b47400 100644
--- a/msg_socket/src/lib.rs
+++ b/msg_socket/src/lib.rs
@@ -13,7 +13,7 @@ mod msg_on_socket;
 
 use std::io::Result;
 use std::marker::PhantomData;
-use std::os::unix::io::RawFd;
+use std::os::unix::io::{AsRawFd, RawFd};
 use std::os::unix::net::UnixDatagram;
 use sys_util::{Error as SysError, ScmSocket, UnlinkUnixDatagram};
 
@@ -117,24 +117,48 @@ impl<I: MsgOnSocket, O: MsgOnSocket> AsRef<UnixDatagram> for MsgSocket<I, O> {
     }
 }
 
+impl<I: MsgOnSocket, O: MsgOnSocket> AsRawFd for MsgSocket<I, O> {
+    fn as_raw_fd(&self) -> RawFd {
+        self.sock.as_raw_fd()
+    }
+}
+
 impl<I: MsgOnSocket, O: MsgOnSocket> AsRef<UnixDatagram> for UnlinkMsgSocket<I, O> {
     fn as_ref(&self) -> &UnixDatagram {
         self.sock.as_ref()
     }
 }
 
+impl<I: MsgOnSocket, O: MsgOnSocket> AsRawFd for UnlinkMsgSocket<I, O> {
+    fn as_raw_fd(&self) -> RawFd {
+        self.as_ref().as_raw_fd()
+    }
+}
+
 impl<M: MsgOnSocket> AsRef<UnixDatagram> for Sender<M> {
     fn as_ref(&self) -> &UnixDatagram {
         &self.sock
     }
 }
 
+impl<M: MsgOnSocket> AsRawFd for Sender<M> {
+    fn as_raw_fd(&self) -> RawFd {
+        self.sock.as_raw_fd()
+    }
+}
+
 impl<M: MsgOnSocket> AsRef<UnixDatagram> for Receiver<M> {
     fn as_ref(&self) -> &UnixDatagram {
         &self.sock
     }
 }
 
+impl<M: MsgOnSocket> AsRawFd for Receiver<M> {
+    fn as_raw_fd(&self) -> RawFd {
+        self.sock.as_raw_fd()
+    }
+}
+
 /// Types that could send a message.
 pub trait MsgSender<M: MsgOnSocket>: AsRef<UnixDatagram> {
     fn send(&self, msg: &M) -> MsgResult<()> {