pub struct MessageBufEtc { /* private fields */ }Expand description
A buffer for receiving messages from a channel.
This differs from MessageBuf in that it holds HandleInfo with
extended handle information.
A MessageBufEtc is essentially a byte buffer and a vector of handle
infos, but move semantics for “taking” handles requires special handling.
Note that for sending messages to a channel, the caller manages the buffers,
using a plain byte slice and Vec<HandleDisposition>.
Implementations§
Source§impl MessageBufEtc
impl MessageBufEtc
Sourcepub fn split_mut(&mut self) -> (&mut Vec<u8>, &mut Vec<HandleInfo>)
pub fn split_mut(&mut self) -> (&mut Vec<u8>, &mut Vec<HandleInfo>)
Splits apart the message buf into a vector of bytes and a vector of handle infos.
Sourcepub fn split(self) -> (Vec<u8>, Vec<HandleInfo>)
pub fn split(self) -> (Vec<u8>, Vec<HandleInfo>)
Splits apart the message buf into a vector of bytes and a vector of handle infos.
Sourcepub fn ensure_capacity_bytes(&mut self, n_bytes: usize)
pub fn ensure_capacity_bytes(&mut self, n_bytes: usize)
Ensure that the buffer has the capacity to hold at least n_bytes bytes.
Sourcepub fn ensure_capacity_handle_infos(&mut self, n_handle_infos: usize)
pub fn ensure_capacity_handle_infos(&mut self, n_handle_infos: usize)
Ensure that the buffer has the capacity to hold at least n_handles handle infos.
Sourcepub fn ensure_initialized_bytes(&mut self, n_bytes: usize)
pub fn ensure_initialized_bytes(&mut self, n_bytes: usize)
Ensure that at least n_bytes bytes are initialized (0 fill).
Sourcepub fn shrink_bytes_to_fit(&mut self)
pub fn shrink_bytes_to_fit(&mut self)
Ensure that the allocation for the message’s bytes is as small as possible.
Sourcepub fn bytes(&self) -> &[u8] ⓘ
pub fn bytes(&self) -> &[u8] ⓘ
Get a reference to the bytes of the message buffer, as a &[u8] slice.
Sourcepub fn n_handle_infos(&self) -> usize
pub fn n_handle_infos(&self) -> usize
The number of handles in the message buffer. Note this counts the number
available when the message was received; take_handle does not affect
the count.
Sourcepub fn take_handle_info(&mut self, index: usize) -> Option<HandleInfo>
pub fn take_handle_info(&mut self, index: usize) -> Option<HandleInfo>
Take the handle at the specified index from the message buffer. If the
method is called again with the same index, it will return None, as
will happen if the index exceeds the number of handles available.