Struct zx::MessageBuf
source · pub struct MessageBuf { /* private fields */ }
Expand description
A buffer for receiving messages from a channel.
A MessageBuf
is essentially a byte buffer and a vector of
handles, 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<Handle>
.
Implementations§
source§impl MessageBuf
impl MessageBuf
sourcepub fn split_mut(&mut self) -> (&mut Vec<u8>, &mut Vec<Handle>)
pub fn split_mut(&mut self) -> (&mut Vec<u8>, &mut Vec<Handle>)
Splits apart the message buf into a vector of bytes and a vector of handles.
sourcepub fn split(self) -> (Vec<u8>, Vec<Handle>)
pub fn split(self) -> (Vec<u8>, Vec<Handle>)
Splits apart the message buf into a vector of bytes and a vector of handles.
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_handles(&mut self, n_handles: usize)
pub fn ensure_capacity_handles(&mut self, n_handles: usize)
Ensure that the buffer has the capacity to hold at least n_handles
handles.
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_handles(&self) -> usize
pub fn n_handles(&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(&mut self, index: usize) -> Option<Handle>
pub fn take_handle(&mut self, index: usize) -> Option<Handle>
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.