#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct SendAndReceivePosixMessageQueueFileDescriptor(PosixMessageQueueFileDescriptor);
impl AsRawFd for SendAndReceivePosixMessageQueueFileDescriptor
{
#[inline(always)]
fn as_raw_fd(&self) -> RawFd
{
self.0.as_raw_fd()
}
}
impl IntoRawFd for SendAndReceivePosixMessageQueueFileDescriptor
{
#[inline(always)]
fn into_raw_fd(self) -> RawFd
{
self.0.into_raw_fd()
}
}
impl FromRawFd for SendAndReceivePosixMessageQueueFileDescriptor
{
#[inline(always)]
unsafe fn from_raw_fd(fd: RawFd) -> Self
{
Self(PosixMessageQueueFileDescriptor::from_raw_fd(fd))
}
}
impl FileDescriptor for SendAndReceivePosixMessageQueueFileDescriptor
{
}
impl PosixMessageQueue for SendAndReceivePosixMessageQueueFileDescriptor
{
#[inline(always)]
fn new(name: &CStr, open_or_create: &OpenOrCreatePosixMessageQueue) -> Result<(Self, PosixMessageQueueConstraints), CreationError>
{
PosixMessageQueueFileDescriptor::new(name, PosixMessageQueueCreateSendOrReceive::SendAndReceive, open_or_create).map(|(message_queue_file_descriptor, posix_message_queue_constraints)| (Self(message_queue_file_descriptor), posix_message_queue_constraints))
}
#[inline(always)]
fn queue_depth(&self) -> usize
{
self.0.queue_depth()
}
}
impl Send for SendAndReceivePosixMessageQueueFileDescriptor
{
#[inline(always)]
fn send(&self, message_buffer: &[u8], message_priority: PosixMessagePriority) -> Result<(), StructWriteError>
{
self.0.send(message_buffer, message_priority)
}
}
impl Receive for SendAndReceivePosixMessageQueueFileDescriptor
{
#[inline(always)]
fn receive(&self, message_buffer: &mut [u8]) -> Result<(usize, PosixMessagePriority), StructReadError>
{
self.0.receive(message_buffer)
}
}