Struct pal_async::socket::PolledSocket
source · pub struct PolledSocket<T> { /* private fields */ }
Expand description
A polled socket.
Implementations§
source§impl<T: AsSockRef> PolledSocket<T>
impl<T: AsSockRef> PolledSocket<T>
source§impl<T> PolledSocket<T>
impl<T> PolledSocket<T>
source§impl<T> PolledSocket<T>
impl<T> PolledSocket<T>
sourcepub fn poll_io<F, R>(
&mut self,
cx: &mut Context<'_>,
slot: InterestSlot,
events: PollEvents,
f: F,
) -> Poll<Result<R>>
pub fn poll_io<F, R>( &mut self, cx: &mut Context<'_>, slot: InterestSlot, events: PollEvents, f: F, ) -> Poll<Result<R>>
Calls nonblocking operation f
when the socket has least one event in
events
ready.
Uses interest slot slot
to allow multiple concurrent operations.
If f
returns Err(err)
with err.kind() == io::ErrorKind::WouldBlock
, then this re-polls the socket for readiness
and returns Poll::Pending
.
source§impl<T> PolledSocket<T>
impl<T> PolledSocket<T>
sourcepub fn split(self) -> (ReadHalf<T>, WriteHalf<T>)
pub fn split(self) -> (ReadHalf<T>, WriteHalf<T>)
Splits the socket into a read and write half that can be used concurrently.
This is more flexible and efficient than
[futures::io::AsyncReadExt::split
], since it avoids holding a lock
while calling into the kernel, and it provides access to the underlying
socket for more advanced operations.
source§impl PolledSocket<Socket>
impl PolledSocket<Socket>
source§impl PolledSocket<Socket>
impl PolledSocket<Socket>
Trait Implementations§
source§impl<T: AsSockRef + Read> AsyncRead for PolledSocket<T>
impl<T: AsSockRef + Read> AsyncRead for PolledSocket<T>
source§impl<T: AsSockRef + Write> AsyncWrite for PolledSocket<T>
impl<T: AsSockRef + Write> AsyncWrite for PolledSocket<T>
source§fn poll_write(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
buf: &[u8],
) -> Poll<Result<usize>>
fn poll_write( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8], ) -> Poll<Result<usize>>
Attempt to write bytes from
buf
into the object. Read moresource§fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<()>>
fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<()>>
Attempt to flush the object, ensuring that any buffered data reach
their destination. Read more
source§impl<T: AsSockRef> PollReady for PolledSocket<T>
impl<T: AsSockRef> PollReady for PolledSocket<T>
source§fn poll_ready(
&mut self,
cx: &mut Context<'_>,
events: PollEvents,
) -> Poll<PollEvents>
fn poll_ready( &mut self, cx: &mut Context<'_>, events: PollEvents, ) -> Poll<PollEvents>
Polls an object for readiness.
Auto Trait Implementations§
impl<T> Freeze for PolledSocket<T>where
T: Freeze,
impl<T> !RefUnwindSafe for PolledSocket<T>
impl<T> Send for PolledSocket<T>where
T: Send,
impl<T> Sync for PolledSocket<T>where
T: Sync,
impl<T> Unpin for PolledSocket<T>where
T: Unpin,
impl<T> !UnwindSafe for PolledSocket<T>
Blanket Implementations§
§impl<R> AsyncReadExt for Rwhere
R: AsyncRead + ?Sized,
impl<R> AsyncReadExt for Rwhere
R: AsyncRead + ?Sized,
§fn chain<R>(self, next: R) -> Chain<Self, R>where
Self: Sized,
R: AsyncRead,
fn chain<R>(self, next: R) -> Chain<Self, R>where
Self: Sized,
R: AsyncRead,
Creates an adaptor which will chain this stream with another. Read more
§fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> Read<'a, Self>where
Self: Unpin,
fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> Read<'a, Self>where
Self: Unpin,
Tries to read some bytes directly into the given
buf
in asynchronous
manner, returning a future type. Read more§fn read_vectored<'a>(
&'a mut self,
bufs: &'a mut [IoSliceMut<'a>],
) -> ReadVectored<'a, Self>where
Self: Unpin,
fn read_vectored<'a>(
&'a mut self,
bufs: &'a mut [IoSliceMut<'a>],
) -> ReadVectored<'a, Self>where
Self: Unpin,
Creates a future which will read from the
AsyncRead
into bufs
using vectored
IO operations. Read more§fn read_exact<'a>(&'a mut self, buf: &'a mut [u8]) -> ReadExact<'a, Self>where
Self: Unpin,
fn read_exact<'a>(&'a mut self, buf: &'a mut [u8]) -> ReadExact<'a, Self>where
Self: Unpin,
Creates a future which will read exactly enough bytes to fill
buf
,
returning an error if end of file (EOF) is hit sooner. Read more§fn read_to_end<'a>(&'a mut self, buf: &'a mut Vec<u8>) -> ReadToEnd<'a, Self>where
Self: Unpin,
fn read_to_end<'a>(&'a mut self, buf: &'a mut Vec<u8>) -> ReadToEnd<'a, Self>where
Self: Unpin,
Creates a future which will read all the bytes from this
AsyncRead
. Read more§fn read_to_string<'a>(
&'a mut self,
buf: &'a mut String,
) -> ReadToString<'a, Self>where
Self: Unpin,
fn read_to_string<'a>(
&'a mut self,
buf: &'a mut String,
) -> ReadToString<'a, Self>where
Self: Unpin,
Creates a future which will read all the bytes from this
AsyncRead
. Read more§impl<W> AsyncWriteExt for Wwhere
W: AsyncWrite + ?Sized,
impl<W> AsyncWriteExt for Wwhere
W: AsyncWrite + ?Sized,
§fn flush(&mut self) -> Flush<'_, Self>where
Self: Unpin,
fn flush(&mut self) -> Flush<'_, Self>where
Self: Unpin,
Creates a future which will entirely flush this
AsyncWrite
. Read more§fn close(&mut self) -> Close<'_, Self>where
Self: Unpin,
fn close(&mut self) -> Close<'_, Self>where
Self: Unpin,
Creates a future which will entirely close this
AsyncWrite
.§fn write<'a>(&'a mut self, buf: &'a [u8]) -> Write<'a, Self>where
Self: Unpin,
fn write<'a>(&'a mut self, buf: &'a [u8]) -> Write<'a, Self>where
Self: Unpin,
Creates a future which will write bytes from
buf
into the object. Read more§fn write_vectored<'a>(
&'a mut self,
bufs: &'a [IoSlice<'a>],
) -> WriteVectored<'a, Self>where
Self: Unpin,
fn write_vectored<'a>(
&'a mut self,
bufs: &'a [IoSlice<'a>],
) -> WriteVectored<'a, Self>where
Self: Unpin,
Creates a future which will write bytes from
bufs
into the object using vectored
IO operations. Read moresource§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
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> PollReadyExt for T
impl<T> PollReadyExt for T
source§fn wait_ready(&mut self, events: PollEvents) -> Ready<'_, T> ⓘwhere
T: Unpin,
fn wait_ready(&mut self, events: PollEvents) -> Ready<'_, T> ⓘwhere
T: Unpin,
Waits for a socket or file to hang up.