diff options
author | Zach Reizner <zachr@google.com> | 2018-11-01 20:42:21 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-11-15 08:11:28 -0800 |
commit | e0305c6533504bb7f02f917dfb4e6b64b67511e8 (patch) | |
tree | 810b1952d88096ea0d32cefe1e941baefc6afd51 | |
parent | c527c1a7e8136dae1e8ae728dfd9932bf3967e7e (diff) | |
download | crosvm-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>
-rw-r--r-- | msg_socket/src/lib.rs | 26 |
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<()> { |