summary refs log tree commit diff
path: root/msg_socket
diff options
context:
space:
mode:
authorZach Reizner <zachr@google.com>2018-11-01 20:42:21 -0700
committerchrome-bot <chrome-bot@chromium.org>2018-11-15 08:11:28 -0800
commite0305c6533504bb7f02f917dfb4e6b64b67511e8 (patch)
tree810b1952d88096ea0d32cefe1e941baefc6afd51 /msg_socket
parentc527c1a7e8136dae1e8ae728dfd9932bf3967e7e (diff)
downloadcrosvm-e0305c6533504bb7f02f917dfb4e6b64b67511e8.tar
crosvm-e0305c6533504bb7f02f917dfb4e6b64b67511e8.tar.gz
crosvm-e0305c6533504bb7f02f917dfb4e6b64b67511e8.tar.bz2
crosvm-e0305c6533504bb7f02f917dfb4e6b64b67511e8.tar.lz
crosvm-e0305c6533504bb7f02f917dfb4e6b64b67511e8.tar.xz
crosvm-e0305c6533504bb7f02f917dfb4e6b64b67511e8.tar.zst
crosvm-e0305c6533504bb7f02f917dfb4e6b64b67511e8.zip
msg_socket: implement AsRawFd for UnixDatagram wrappers
Change-Id: I0589c6b88b4922db422771dc5930ca3f00b91736
Reviewed-on: https://chromium-review.googlesource.com/1314209
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Zach Reizner <zachr@chromium.org>
Reviewed-by: Jingkui Wang <jkwang@google.com>
Diffstat (limited to 'msg_socket')
-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<()> {