summaryrefslogtreecommitdiff
path: root/src/mqueue.rs
diff options
context:
space:
mode:
authorDavid Collard <davidcollardprofessional@gmail.com>2023-01-10 20:32:23 -0500
committerDavid Collard <davidcollardprofessional@gmail.com>2023-01-10 21:47:56 -0500
commit33643eff5a3b7c44c54330141d6ed71c8739fde4 (patch)
treefe8e5574a35ee42e7b6f3b63ec883f603715f63b /src/mqueue.rs
parentbbb97bf3f709f0c77ab7cc0bb205915797ea59d1 (diff)
downloadnix-33643eff5a3b7c44c54330141d6ed71c8739fde4.zip
Added `mq_timedreceive` to `::nix::mqueue`.
Diffstat (limited to 'src/mqueue.rs')
-rw-r--r--src/mqueue.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/mqueue.rs b/src/mqueue.rs
index 33599bf9..ac183eb5 100644
--- a/src/mqueue.rs
+++ b/src/mqueue.rs
@@ -197,6 +197,32 @@ pub fn mq_receive(
Errno::result(res).map(|r| r as usize)
}
+feature! {
+ #![feature = "time"]
+ use crate::sys::time::TimeSpec;
+ /// Receive a message from a message queue with a timeout
+ ///
+ /// See also ['mq_timedreceive(2)'](https://pubs.opengroup.org/onlinepubs/9699919799/functions/mq_receive.html)
+ pub fn mq_timedreceive(
+ mqdes: &MqdT,
+ message: &mut [u8],
+ msg_prio: &mut u32,
+ abstime: &TimeSpec,
+ ) -> Result<usize> {
+ let len = message.len() as size_t;
+ let res = unsafe {
+ libc::mq_timedreceive(
+ mqdes.0,
+ message.as_mut_ptr() as *mut c_char,
+ len,
+ msg_prio as *mut u32,
+ abstime.as_ref(),
+ )
+ };
+ Errno::result(res).map(|r| r as usize)
+ }
+}
+
/// Send a message to a message queue
///
/// See also [`mq_send(2)`](https://pubs.opengroup.org/onlinepubs/9699919799/functions/mq_send.html)