pub struct MessagePipe<M: RingMem>(/* private fields */);
Expand description
An open vmbus pipe in message mode, which can send and receive datagrams.
Implementations§
Source§impl<M: RingMem> MessagePipe<M>
impl<M: RingMem> MessagePipe<M>
Sourcepub fn new(channel: RawAsyncChannel<M>) -> Result<Self>
pub fn new(channel: RawAsyncChannel<M>) -> Result<Self>
Creates a new pipe from an open channel.
Sourcepub fn new_raw(channel: RawAsyncChannel<M>) -> Result<Self>
pub fn new_raw(channel: RawAsyncChannel<M>) -> Result<Self>
Creates a new raw pipe from an open channel.
A raw pipe has no additional framing and sends and receives vmbus packets directly. As a result, packet sizes will be rounded up to an 8-byte multiple.
Sourcepub fn split(&mut self) -> (MessageReadHalf<'_, M>, MessageWriteHalf<'_, M>)
pub fn split(&mut self) -> (MessageReadHalf<'_, M>, MessageWriteHalf<'_, M>)
Splits the pipe into read and write halves so that reads and writes may be concurrently issued.
Sourcepub async fn wait_write_ready(&mut self, send_size: usize) -> Result<()>
pub async fn wait_write_ready(&mut self, send_size: usize) -> Result<()>
Waits for the outgoing ring buffer to have enough space to write a
message of size send_size
.
Sourcepub fn try_send(&mut self, buf: &[u8]) -> Result<()>
pub fn try_send(&mut self, buf: &[u8]) -> Result<()>
Tries to send a datagram, failing with io::ErrorKind::WouldBlock
if
there is not enough space in the ring.
Sourcepub fn try_send_vectored(&mut self, bufs: &[IoSlice<'_>]) -> Result<()>
pub fn try_send_vectored(&mut self, bufs: &[IoSlice<'_>]) -> Result<()>
Tries to send a datagram, failing with io::ErrorKind::WouldBlock
if
there is not enough space in the ring.
Trait Implementations§
Source§impl<M: RingMem> AsyncRecv for MessagePipe<M>
impl<M: RingMem> AsyncRecv for MessagePipe<M>
Source§impl<M: RingMem> AsyncSend for MessagePipe<M>
impl<M: RingMem> AsyncSend for MessagePipe<M>
Source§impl<M: RingMem> InspectMut for MessagePipe<M>
impl<M: RingMem> InspectMut for MessagePipe<M>
Source§fn inspect_mut(&mut self, req: Request<'_>)
fn inspect_mut(&mut self, req: Request<'_>)
Inspects the object.
Auto Trait Implementations§
impl<M> Freeze for MessagePipe<M>where
M: Freeze,
impl<M> !RefUnwindSafe for MessagePipe<M>
impl<M> Send for MessagePipe<M>
impl<M> Sync for MessagePipe<M>where
M: Sync,
impl<M> Unpin for MessagePipe<M>where
M: Unpin,
impl<M> !UnwindSafe for MessagePipe<M>
Blanket Implementations§
Source§impl<T> AsyncRecvExt for T
impl<T> AsyncRecvExt for T
Source§fn recv_exact<'a>(&'a mut self, buf: &'a mut [u8]) -> RecvExact<'a, Self> ⓘ
fn recv_exact<'a>(&'a mut self, buf: &'a mut [u8]) -> RecvExact<'a, Self> ⓘ
Receive a datagram into
buf
, failing if its size is not exactly the
size of buf
.Source§fn recv_vectored<'a>(
&'a mut self,
bufs: &'a mut [IoSliceMut<'a>],
) -> RecvVectored<'a, Self> ⓘ
fn recv_vectored<'a>( &'a mut self, bufs: &'a mut [IoSliceMut<'a>], ) -> RecvVectored<'a, Self> ⓘ
Read a single datagram into
bufs
. Read moreSource§impl<T> AsyncSendExt for T
impl<T> AsyncSendExt for T
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
Mutably borrows from an owned value. Read more