Skip to content

Commit

Permalink
Add comments
Browse files Browse the repository at this point in the history
  • Loading branch information
amab8901 committed Feb 27, 2023
1 parent a971b63 commit 9e355b9
Showing 1 changed file with 31 additions and 1 deletion.
32 changes: 31 additions & 1 deletion tokio/src/net/udp.rs
Expand Up @@ -1310,7 +1310,37 @@ impl UdpSocket {
.try_io(interest, || self.io.try_io(f))
}

/// lol
/// Reads or writes from the socket using a user-provided IO operation.
///
/// The readiness of the socket is awaited and when the socket is ready,
/// the provided closure is called. The closure should attempt to perform
/// IO operation on the socket by manually calling the appropriate syscall.
/// If the operation fails because the socket is not actually ready,
/// then the closure should return a `WouldBlock` error, the readiness
/// flag is cleared and the socket readiness is awaited again. This loop
/// repeated until the closure returns an `Ok` or an error that doesn't
/// have the `WouldBlock` value.
///
/// The closure should only return a `WouldBlock` error if it has performed
/// an IO operation on the socket that failed due to the socket not being
/// ready. Returning a `WouldBlock` error in any other situation will
/// incorrectly clear the readiness flag, which can cause the socket to
/// behave incorrectly.
///
/// The closure should not perform the IO operation using any of the methods
/// defined on the Tokio `UdpSocket` type, as this will mess with the
/// readiness flag and can cause the socket to behave incorrectly.
///
/// This method is not intended to be used with combined interests.
/// The closure should perform only one type of IO operation, so it should not
/// require more than one ready state. This method may panic or sleep forever
/// if it is called with a combined interest.
///
/// Usually, [`readable()`], [`writable()`] or [`ready()`] is used with this function.
///
/// [`readable()`]: UdpSocket::readable()
/// [`writable()`]: UdpSocket::writable()
/// [`ready()`]: UdpSocket::ready()
pub async fn async_io<R>(
&self,
interest: Interest,
Expand Down

0 comments on commit 9e355b9

Please sign in to comment.