Struct fidl::handle::fuchsia_handles::MessageBufEtc
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§
§impl MessageBufEtc
impl MessageBufEtc
pub fn new() -> MessageBufEtc
pub fn new() -> MessageBufEtc
Create a new, empty, message buffer.
pub fn new_with(v: Vec<u8>, h: Vec<HandleInfo>) -> MessageBufEtc
pub fn new_with(v: Vec<u8>, h: Vec<HandleInfo>) -> MessageBufEtc
Create a new non-empty message buffer.
pub 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.
pub 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.
pub 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.
pub 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.
pub 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).
pub 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.
pub 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.
pub fn clear(&mut self)
pub fn clear(&mut self)
Clear the bytes and handles contained in the buf. This will drop any contained handles, resulting in their resources being freed.