#[derive(Debug, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash)]
pub struct PosixMessageQueueCreateSettings
{
pub permissions: mode_t,
pub optional_create_settings: Option<OptionalPosixMessageQueueCreateSettings>,
}
impl Default for PosixMessageQueueCreateSettings
{
#[inline(always)]
fn default() -> Self
{
Self
{
permissions: S_IRUSR | S_IWUSR,
optional_create_settings: None,
}
}
}
impl PosixMessageQueueCreateSettings
{
#[inline(always)]
pub(crate) fn invoke_mq_open(&self, name_pointer: *const c_char, oflag: i32) -> c_int
{
let mode = self.permissions;
match self.optional_create_settings
{
None => unsafe { mq_open(name_pointer, oflag, mode, null_mut::<mq_attr>()) },
Some(ref optional_create_settings) =>
{
let mut attributes = mq_attr::for_create(optional_create_settings);
unsafe { mq_open(name_pointer, oflag, mode, &mut attributes) }
}
}
}
}