mirror of
https://github.com/tokio-rs/tokio.git
synced 2026-08-27 00:00:12 +02:00
Doc improvements (#46)
* small doc cleanups in PollEvented * small doc cleanups in IoToken * improve crate level documentation - Add links to the futures, mio and tokio-uds crates. - Add links to various structs and types mentioned. - use eprintln for error reporting in the example. * improvements to the UdpSocket documentation - Fixed links usage. - Removed references to a no longer existing `Window` struct. - Made notes about using functions in context of a future. * documentation improvements to UdpFramed and UdpCodec - Since HTTP uses TCP (QUIC aside) using it as an example in an UDP protocol feels wrong. - Make the note of tampering with the underlying streams more explicit. * update reactor module level documentation Adds an explanation of every public struct. * expand Handle and Remote documentation * expand net module documentation Adds an explanation of every public struct and how they work together. * update TcpListener documentation Reorder the various option methods; get first then set. Note about panicing added to poll_read. * remove mention of none-existing future R * improve documentation of TcpStream * fix UdpSocket doc This when wrong when merging various commits.
This commit is contained in:
committed by
Alex Crichton
parent
0b54557796
commit
c801584d24
@@ -12,8 +12,8 @@ pub struct IoToken {
|
||||
}
|
||||
|
||||
impl IoToken {
|
||||
/// Add a new source to an event loop, returning a future which will resolve
|
||||
/// to the token that can be used to identify this source.
|
||||
/// Add a new source to an event loop, returning a token that can be used to
|
||||
/// identify this source.
|
||||
///
|
||||
/// When a new I/O object is created it needs to be communicated to the
|
||||
/// event loop to ensure that it's registered and ready to receive
|
||||
@@ -40,7 +40,7 @@ impl IoToken {
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns a reference to the remote handle
|
||||
/// Returns a reference to the remote handle.
|
||||
pub fn remote(&self) -> &Remote {
|
||||
&self.handle
|
||||
}
|
||||
@@ -137,8 +137,8 @@ impl IoToken {
|
||||
/// deallocating all internal resources assigned to the given token.
|
||||
///
|
||||
/// This method should be called whenever a source of events is being
|
||||
/// destroyed. This will ensure that the event loop can reuse `tok` for
|
||||
/// another I/O object if necessary and also remove it from any poll
|
||||
/// destroyed. This will ensure that the event loop can reuse the `token`
|
||||
/// for another I/O object if necessary and also remove it from any poll
|
||||
/// notifications and callbacks.
|
||||
///
|
||||
/// Note that wake callbacks may still be invoked after this method is
|
||||
|
||||
+36
-12
@@ -1,8 +1,24 @@
|
||||
//! The core reactor driving all I/O
|
||||
//! The core reactor driving all I/O.
|
||||
//!
|
||||
//! This module contains the `Core` type which is the reactor for all I/O
|
||||
//! happening in `tokio-core`. This reactor (or event loop) is used to drive I/O
|
||||
//! resources.
|
||||
//! This module contains the [`Core`] reactor type which is the event loop for
|
||||
//! all I/O happening in `tokio`. This core reactor (or event loop) is used to
|
||||
//! drive I/O resources.
|
||||
//!
|
||||
//! The [`Handle`] and [`Remote`] structs are refences to the event loop,
|
||||
//! created by the [`handle`][handle_method] and [`remote`][remote_method]
|
||||
//! respectively, and are used to construct I/O objects. `Remote` is sendable,
|
||||
//! while `Handle` is not.
|
||||
//!
|
||||
//! Lastly [`PollEvented`] can be used to construct I/O objects that interact
|
||||
//! with the event loop, e.g. [`TcpStream`] in the net module.
|
||||
//!
|
||||
//! [`Core`]: struct.Core.html
|
||||
//! [`Handle`]: struct.Handle.html
|
||||
//! [`Remote`]: struct.Remote.html
|
||||
//! [handle_method]: struct.Core.html#method.handle
|
||||
//! [remote_method]: struct.Core.html#method.remote
|
||||
//! [`PollEvented`]: struct.PollEvented.html
|
||||
//! [`TcpStream`]: ../net/struct.TcpStream.html
|
||||
|
||||
use std::fmt;
|
||||
use std::io::{self, ErrorKind};
|
||||
@@ -25,7 +41,7 @@ pub use self::poll_evented::PollEvented;
|
||||
/// Global counter used to assign unique IDs to reactor instances.
|
||||
static NEXT_LOOP_ID: AtomicUsize = ATOMIC_USIZE_INIT;
|
||||
|
||||
/// An event loop.
|
||||
/// The core reactor, or event loop.
|
||||
///
|
||||
/// The event loop is the main source of blocking in an application which drives
|
||||
/// all other I/O events and notifications happening. Each event loop can have
|
||||
@@ -56,19 +72,27 @@ struct Inner {
|
||||
io_dispatch: RwLock<Slab<ScheduledIo>>,
|
||||
}
|
||||
|
||||
/// Handle to an event loop, used to construct I/O objects, send messages, and
|
||||
/// otherwise interact indirectly with the event loop itself.
|
||||
/// A remote handle to an event loop, for more information see [`Handle`].
|
||||
///
|
||||
/// Handles can be cloned, and when cloned they will still refer to the
|
||||
/// This handle can be cloned, and when cloned they will still refer to the
|
||||
/// same underlying event loop.
|
||||
///
|
||||
/// [`Handle`]: struct.Handle.html
|
||||
#[derive(Clone)]
|
||||
pub struct Remote {
|
||||
id: usize,
|
||||
inner: Weak<Inner>,
|
||||
}
|
||||
|
||||
/// A non-sendable handle to an event loop, useful for manufacturing instances
|
||||
/// of `LoopData`.
|
||||
/// A handle to an event loop, used to construct I/O objects, send messages, and
|
||||
/// otherwise interact indirectly with the event loop itself.
|
||||
///
|
||||
/// Handles can be cloned, and when cloned they will still refer to the
|
||||
/// same underlying event loop.
|
||||
///
|
||||
/// Handles are non-sendable, see [`Remote`] for a sendable reference.
|
||||
///
|
||||
/// [`Remote`]: struct.Remote.html
|
||||
#[derive(Clone)]
|
||||
pub struct Handle {
|
||||
remote: Remote,
|
||||
@@ -316,8 +340,8 @@ impl Remote {
|
||||
/// the I/O loop itself. The future returned by the closure will be
|
||||
/// scheduled on the event loop and run to completion.
|
||||
///
|
||||
/// Note that while the closure, `F`, requires the `Send` bound as it might
|
||||
/// cross threads, the future `R` does not.
|
||||
/// Note that the closure, `F`, requires the `Send` bound as it might cross
|
||||
/// threads.
|
||||
///
|
||||
/// # Panics
|
||||
///
|
||||
|
||||
@@ -80,9 +80,6 @@ impl<E: fmt::Debug> fmt::Debug for PollEvented<E> {
|
||||
impl<E: Evented> PollEvented<E> {
|
||||
/// Creates a new readiness stream associated with the provided
|
||||
/// `loop_handle` and for the given `source`.
|
||||
///
|
||||
/// This method returns a future which will resolve to the readiness stream
|
||||
/// when it's ready.
|
||||
pub fn new(io: E, handle: &Handle) -> io::Result<PollEvented<E>> {
|
||||
let token = IoToken::new(&io, handle)?;
|
||||
|
||||
@@ -118,11 +115,11 @@ impl<E: Evented> PollEvented<E> {
|
||||
impl<E> PollEvented<E> {
|
||||
/// Tests to see if this source is ready to be read from or not.
|
||||
///
|
||||
/// If this stream is not ready for a read then `NotReady` will be returned
|
||||
/// and the current task will be scheduled to receive a notification when
|
||||
/// the stream is readable again. In other words, this method is only safe
|
||||
/// to call from within the context of a future's task, typically done in a
|
||||
/// `Future::poll` method.
|
||||
/// If this stream is not ready for a read then `Async::NotReady` will be
|
||||
/// returned and the current task will be scheduled to receive a
|
||||
/// notification when the stream is readable again. In other words, this
|
||||
/// method is only safe to call from within the context of a future's task,
|
||||
/// typically done in a `Future::poll` method.
|
||||
///
|
||||
/// This is mostly equivalent to `self.poll_ready(Ready::readable())`.
|
||||
///
|
||||
@@ -137,7 +134,7 @@ impl<E> PollEvented<E> {
|
||||
|
||||
/// Tests to see if this source is ready to be written to or not.
|
||||
///
|
||||
/// If this stream is not ready for a write then `NotReady` will be returned
|
||||
/// If this stream is not ready for a write then `Async::NotReady` will be returned
|
||||
/// and the current task will be scheduled to receive a notification when
|
||||
/// the stream is writable again. In other words, this method is only safe
|
||||
/// to call from within the context of a future's task, typically done in a
|
||||
|
||||
Reference in New Issue
Block a user