Struct MessageBuf
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§
§impl MessageBuf
impl MessageBuf
pub fn new() -> MessageBuf
pub fn new() -> MessageBuf
Create a new, empty, message buffer.
pub 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.
pub 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.
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_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.
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_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.
pub 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.
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 MessageBuf
impl Debug for MessageBuf
§impl Default for MessageBuf
impl Default for MessageBuf
§fn default() -> MessageBuf
fn default() -> MessageBuf
Auto Trait Implementations§
impl Freeze for MessageBuf
impl RefUnwindSafe for MessageBuf
impl Send for MessageBuf
impl Sync for MessageBuf
impl Unpin for MessageBuf
impl UnwindSafe for MessageBuf
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