summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md2
-rw-r--r--src/poll.rs13
-rw-r--r--test/test_poll.rs8
3 files changed, 22 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index efc8228a..1139cf09 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -48,6 +48,8 @@ This project adheres to [Semantic Versioning](https://semver.org/).
(#[1525](https://github.com/nix-rust/nix/pull/1525))
(#[1531](https://github.com/nix-rust/nix/pull/1531))
(#[1534](https://github.com/nix-rust/nix/pull/1534))
+- Added read/write accessors for 'events' on `PollFd`.
+ (#[1517](https://github.com/nix-rust/nix/pull/1517))
### Changed
diff --git a/src/poll.rs b/src/poll.rs
index 0eaf7e1d..8556c1bb 100644
--- a/src/poll.rs
+++ b/src/poll.rs
@@ -35,10 +35,21 @@ impl PollFd {
}
}
- /// Returns the events that occured in the last call to `poll` or `ppoll`.
+ /// Returns the events that occured in the last call to `poll` or `ppoll`. Will only return
+ /// `None` if the kernel provides status flags that Nix does not know about.
pub fn revents(self) -> Option<PollFlags> {
PollFlags::from_bits(self.pollfd.revents)
}
+
+ /// The events of interest for this `PollFd`.
+ pub fn events(self) -> PollFlags {
+ PollFlags::from_bits(self.pollfd.events).unwrap()
+ }
+
+ /// Modify the events of interest for this `PollFd`.
+ pub fn set_events(&mut self, events: PollFlags) {
+ self.pollfd.events = events.bits();
+ }
}
impl AsRawFd for PollFd {
diff --git a/test/test_poll.rs b/test/test_poll.rs
index ee89c4a0..e4b369f3 100644
--- a/test/test_poll.rs
+++ b/test/test_poll.rs
@@ -72,3 +72,11 @@ fn test_pollfd_fd() {
let pfd = PollFd::new(0x1234, PollFlags::empty());
assert_eq!(pfd.as_raw_fd(), 0x1234);
}
+
+#[test]
+fn test_pollfd_events() {
+ let mut pfd = PollFd::new(-1, PollFlags::POLLIN);
+ assert_eq!(pfd.events(), PollFlags::POLLIN);
+ pfd.set_events(PollFlags::POLLOUT);
+ assert_eq!(pfd.events(), PollFlags::POLLOUT);
+}