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.