Struct 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 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.
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.
Trait Implementations§
§impl Debug for MessageBufEtc
impl Debug for MessageBufEtc
§impl Default for MessageBufEtc
impl Default for MessageBufEtc
§fn default() -> MessageBufEtc
fn default() -> MessageBufEtc
§impl MessageBufFor<DefaultFuchsiaResourceDialect> for MessageBufEtc
impl MessageBufFor<DefaultFuchsiaResourceDialect> for MessageBufEtc
§fn new() -> MessageBufEtc
fn new() -> MessageBufEtc
§fn shrink_bytes_to_fit(&mut self)
fn shrink_bytes_to_fit(&mut self)
Auto Trait Implementations§
impl Freeze for MessageBufEtc
impl RefUnwindSafe for MessageBufEtc
impl Send for MessageBufEtc
impl Sync for MessageBufEtc
impl Unpin for MessageBufEtc
impl UnwindSafe for MessageBufEtc
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T, D> Encode<Ambiguous1, D> for Twhere
D: ResourceDialect,
impl<T, D> Encode<Ambiguous1, D> for Twhere
D: ResourceDialect,
§impl<T, D> Encode<Ambiguous2, D> for Twhere
D: ResourceDialect,
impl<T, D> Encode<Ambiguous2, D> for Twhere
D: ResourceDialect,
Source§impl<T> InstanceFromServiceTransport<T> for T
impl<T> InstanceFromServiceTransport<T> for T
Source§fn from_service_transport(handle: T) -> T
fn from_service_transport(handle: T) -> T
T
to Self