summaryrefslogtreecommitdiffstats
path: root/tokio/src/net
AgeCommit message (Collapse)Author
2020-10-19docs: adjust TcpListener::from_std documentation to match behavior (#3002)pluth
2020-10-17docs: fix typos on UdpSocket (#2979)Evan Cameron
2020-10-12meta: combine `net` and `dns`, use `parking_lot` (#2951)Carl Lerche
This combines the `dns` and `net` feature flags. Previously, `dns` was included as part of `net`. Given that is is rare that one would want `dns` without `net`, DNS is now entirely gated w/ `net`. The `parking_lot` feature is included as part of `full`. Some misc docs are tweaked to reflect feature flag changes.
2020-10-13net: merge tcp, udp, uds features to net feature (#2943)Taiki Endo
2020-10-12rt: Remove `threaded_scheduler()` and `basic_scheduler()` (#2876)Lucio Franco
Co-authored-by: Alice Ryhl <alice@ryhl.io> Co-authored-by: Carl Lerche <me@carllerche.com>
2020-10-12io: Rename `ReadBuf` methods (#2945)Lucio Franco
This changes `ReadBuf::add_filled` to `ReadBuf::advance` and `ReadBuf::append` to `ReadBuf::put_slice`. This is just a mechanical change. Closes #2769
2020-10-11net: make UCred fields private (#2936)Taiki Endo
2020-10-09net: switch socket methods to &self (#2934)Carl Lerche
Switches various socket methods from &mut self to &self. This uses the intrusive waker infrastructure to handle multiple waiters. Refs: #2928
2020-10-08net: use &self with TcpListener::accept (#2919)Carl Lerche
Uses the infrastructure added by #2828 to enable switching `TcpListener::accept` to use `&self`. This also switches `poll_accept` to use `&self`. While doing introduces a hazard, `poll_*` style functions are considered low-level. Most users will use the `async fn` variants which are more misuse-resistant. TcpListener::incoming() is temporarily removed as it has the same problem as `TcpSocket::by_ref()` and will be implemented later.
2020-10-07net: add `TcpSocket` for configuring a socket (#2920)Carl Lerche
This enables the caller to configure the socket and to explicitly bind the socket before converting it to a `TcpStream` or `TcpListener`. Closes: #2902
2020-10-06docs: more docs for UdpSocket (#2883)Evan Cameron
2020-10-05net: implement AsRawSocket on Windows (#2911)Taiki Endo
2020-10-02io: update to Mio 0.7 (#2893)Carl Lerche
This also makes Mio an implementation detail, removing it from the public API. This is based on #1767.
2020-10-01chore: make #[doc(hidden)] apis private (#2901)Alice Ryhl
2020-09-28Seal ToSocketAddrs methods with an internal argument (#2892)Sean McArthur
Closes #2891
2020-09-24io: remove poll_{read,write}_buf from traits (#2882)Carl Lerche
These functions have object safety issues. It also has been decided to avoid vectored operations on the I/O traits. A later PR will bring back vectored operations on specific types that support them. Refs: #2879, #2716
2020-09-24chore: Use IoSlice's Copy impl to clean up some repetitive code (#2875)bdonlan
As we go into 0.3 we no longer need to support older versions of Rust where IoSlice did not implement Copy and Clone, so we can more easily initialize the IoSlice array in net::tcp::stream. Co-authored-by: Bryan Donlan <bdonlan@amazon.com>
2020-09-23io: use intrusive wait list for I/O driver (#2828)Sean McArthur
This refactors I/O registration in a few ways: - Cleans up the cached readiness in `PollEvented`. This cache used to be helpful when readiness was a linked list of `*mut Node`s in `Registration`. Previous refactors have turned `Registration` into just an `AtomicUsize` holding the current readiness, so the cache is just extra work and complexity. Gone. - Polling the `Registration` for readiness now gives a `ReadyEvent`, which includes the driver tick. This event must be passed back into `clear_readiness`, so that the readiness is only cleared from `Registration` if the tick hasn't changed. Previously, it was possible to clear the readiness even though another thread had *just* polled the driver and found the socket ready again. - Registration now also contains an `async fn readiness`, which stores wakers in an instrusive linked list. This allows an unbounded number of tasks to register for readiness (previously, only 1 per direction (read and write)). By using the intrusive linked list, there is no concern of leaking the storage of the wakers, since they are stored inside the `async fn` and released when the future is dropped. - Registration retains a `poll_readiness(Direction)` method, to support `AsyncRead` and `AsyncWrite`. They aren't able to use `async fn`s, and so there are 2 reserved slots for those methods. - IO types where it makes sense to have multiple tasks waiting on them now take advantage of this new `async fn readiness`, such as `UdpSocket` and `UnixDatagram`. Additionally, this makes the `io-driver` "feature" internal-only (no longer documented, not part of public API), and adds a second internal-only feature, `io-readiness`, to group together linked list part of registration that is only used by some of the IO types. After a bit of discussion, changing stream-based transports (like `TcpStream`) to have `async fn read(&self)` is punted, since that is likely too easy of a footgun to activate. Refs: #2779, #2728
2020-09-23net: change `UnixListener::poll_accept` to public (#2845)kalcutter
2020-09-13doc: fix some links (#2834)Alice Ryhl
2020-08-27rt: Refactor `Runtime::block_on` to take `&self` (#2782)Lucio Franco
Co-authored-by: Eliza Weisman <eliza@buoyant.io>
2020-08-23net: Add examples to UnixDatagram (#2765)caranatar
* net: adding examples for UnixDatagram Adding examples to documentation for UnixDatagram * net: document named UnixDatagrams persistence Add documentation to indicate that named UnixDatagrams 'leak' socket files after execution. * net: rustfmt issue in UnixDatagram Fixing rustfmt issue in UnixDatagram * net: adding examples for UnixDatagram Fixes: #2686 Refs: #1679 Refs: #1111
2020-08-13io: change AsyncRead to use a ReadBuf (#2758)Sean McArthur
Works towards #2716. Changes the argument to `AsyncRead::poll_read` to take a `ReadBuf` struct that safely manages writes to uninitialized memory.
2020-08-01net: impl ToSocketAddrs for (String, u16) (#2724)南浦月
2020-07-28add: Add `UdpSocket::{try_send,try_send_to}` methods (#1979)Kevin Leimkuhler
2020-07-25net: add try_recv/from & try_send/to to UnixDatagram (#1677)jean-airoldie
This allows nonblocking sync send & recv operations on the socket.
2020-07-24net: ensure that unix sockets have both split and into_split (#2687)Alice Ryhl
The documentation build failed with errors such as error: `[read]` public documentation for `take` links to a private item --> tokio/src/io/util/async_read_ext.rs:1078:9 | 1078 | / /// Creates an adaptor which reads at most `limit` bytes from it. 1079 | | /// 1080 | | /// This function returns a new instance of `AsyncRead` which will read 1081 | | /// at most `limit` bytes, after which it will always return EOF ... | 1103 | | /// } 1104 | | /// ``` | |_______________^ | note: the lint level is defined here --> tokio/src/lib.rs:13:9 | 13 | #![deny(intra_doc_link_resolution_failure)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ = note: the link appears in this line: bytes read and future calls to [`read()`][read] may succeed.
2020-07-23net: introduce split on UnixDatagram (#2557)cssivision
2020-07-20dns: document that strings require the DNS feature (#2663)Alice Ryhl
2020-07-13doc: fix typo from "Rust langague" to "Rust language" (#2656)Antoine Murat
* doc: fix typo in addr * doc: fix typo in stream * doc: fix typo in stream/collect
2020-07-12net: fix OwnedWriteHalf behavior on drop (#2597)Carl Lerche
Previously, dropping the Write handle would issue a `shutdown(Both)`. However, shutting down the read half is not portable and not the correct action to take. This changes the behavior of OwnedWriteHalf to only perform a `shutdown(Write)` on drop.
2020-06-11net: impl ToSocketAddrs for &[SocketAddr] (#2604)Taiki Endo
2020-05-31docs: use intra-links in the docs (#2575)xliiv
2020-05-30docs: replace method links with intra-links (#2540)xliiv
2020-05-28net: add note about into_split's drop (#2567)Mathspy
This took me a bit to catch on to because I didn't really think there was any reason to investigate the individual documentation of each half. As someone dealing with TCP streams directly for first time (without previous experience from other languages) this caught me by surprise
2020-05-11tokio: add support for illumos target (#2486)Patrick Mooney
Although very similar in many regards, illumos and Solaris have been diverging since the end of OpenSolaris. With the addition of illumos as a Rust target, it must be wired into the same interfaces which it was consuming when running under the 'solaris' target.
2020-04-28net: mention that bind sets SO_REUSEADDR (#2454)Alice Ryhl
2020-04-23docs: make it easier to discover extension traits (#2434)Alice Ryhl
Refs: #2307
2020-04-23io: track rustfmt/clippy changes (#2431)Alice Ryhl
Refs: rust-lang/rustfmt#4140
2020-04-19net: introduce owned split on TcpStream (#2270)Alice Ryhl
2020-04-13doc: fix a few broken links (#2400)xliiv
2020-04-12docs: replace some html links with rustdoc paths (#2381)xliiv
Included changes - all simple references like `<type>.<name>.html` for these types - enum - fn - struct - trait - type - simple references for methods, like struct.DelayQueue.html#method.poll Refs: #1473
2020-04-12docs: fix incorrect documentation links & formatting (#2332)Nikita Baksalyar
The streams documentation referred to module-level 'split' doc which is no longer there
2020-02-26tcp: Update listener docs (#2276)Akshay Narayan
* Update listener docs * re-wrap text and add links
2020-02-26Implement Stream for Listener types (#2275)Akshay Narayan
The Incoming types currently don't take ownership of the listener, but in most cases, users who want to use the Listener as a stream will only want to use the stream from that point on. So, implement Stream directly on the Listener types.
2020-02-14UnixStream::poll_shutdown is not a no-op (#2245)Jon Gjengset
2020-01-28docs: minor fixes to `TcpStream` API docs (#2183)Vitor Enes
2020-01-24docs: use third form in API docs (#2027)Oleg Nosov
2020-01-22net: add `ReadHalf::{poll,poll_peak}` (#2151)Kevin Leimkuhler
The `&mut self` requirements for `TcpStream` methods ensure that there are at most two tasks using the stream--one for reading and one for writing. `TcpStream::split` allows two separate tasks to hold a reference to a single `TcpStream`. `TcpStream::{peek,poll_peek}` only poll for read readiness, and therefore are safe to use with a `ReadHalf`. Instead of duplicating `TcpStream::poll_peek`, a private method is now used by both `poll_peek` methods that uses the fact that only a `&TcpStream` is required. Closes #2136
2020-01-13stream: add `StreamExt::collect()` (#2109)Carl Lerche
Provides an asynchronous equivalent to `Iterator::collect()`. A sealed `FromStream` trait is added. Stabilization is pending Rust supporting `async` trait fns.