pub trait ReadableHandle {
// Required methods
fn poll_readable(
&self,
cx: &mut Context<'_>,
) -> Poll<Result<ReadableState, Status>>;
fn need_readable(&self, cx: &mut Context<'_>) -> Poll<Result<(), Status>>;
}Expand description
A Handle that receives notifications when it is readable.
§Examples
loop {
ready!(self.poll_readable(cx))?;
match /* make read syscall */ {
Err(zx::Status::SHOULD_WAIT) => ready!(self.need_readable(cx)?),
status => return Poll::Ready(status),
}
}Required Methods§
Sourcefn poll_readable(
&self,
cx: &mut Context<'_>,
) -> Poll<Result<ReadableState, Status>>
fn poll_readable( &self, cx: &mut Context<'_>, ) -> Poll<Result<ReadableState, Status>>
If the object is ready for reading, returns Ready with the readable
state. If the implementor returns Pending, it should first ensure that
need_readable is called.
This should be called in a poll function. If the syscall returns
SHOULD_WAIT, you must call need_readable to schedule wakeup when the
object is readable.
The returned ReadableState does not necessarily reflect an observed
OBJECT_READABLE signal. We optimistically assume the object remains
readable until need_readable is called.
Sourcefn need_readable(&self, cx: &mut Context<'_>) -> Poll<Result<(), Status>>
fn need_readable(&self, cx: &mut Context<'_>) -> Poll<Result<(), Status>>
Arranges for the current task to be woken when the object receives an
OBJECT_READABLE or OBJECT_PEER_CLOSED signal. This can return
Poll::Ready if the object has already been signaled in which case the
waker will not be woken and it is the caller’s responsibility to not
lose the signal.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".