Commit graph

47 commits

Author SHA1 Message Date
Stjepan Glavina
1d875836a2
Implement Clone for TcpStream (#689)
* Implement Clone for TcpStream

* Update examples

* Remove accidentally added examples
2020-01-28 18:14:16 +01:00
Toralf Wittner
57974ae0b7 Use non-blocking connect for TcpStream. (#687)
* Use non-blocking connect for TcpStream.

Instead of spawning a background thread which is unaware of any timeouts
but continues to run until the TCP stack decides that the remote is not
reachable we use mio's non-blocking connect.

mio's `TcpStream::connect` returns immediately but the actual connection
is usually just in progress and we have to be sure the socket is
writeable before we can consider the connection as established.

* Add Watcher::{poll_read_ready, poll_write_ready}.

Following a suggestion of @stjepang we offer methods to check for
read/write readiness of a `Watcher` instead of the previous approach to
accept a set of `Waker`s when registering an event source. The changes
relative to master are smaller and both methods look more useful in
other contexts. Also the code is more robust w.r.t. wakeups of the
`Waker` from clones outside the `Reactor`.

I am not sure if we need to add protection mechanisms against spurious
wakeups from mio. Currently we treat the `Poll::Ready(())` of
`Watcher::poll_write_ready` as proof that the non-blocking connect has
finished, but if the event from mio was a spurious one, it might still
be ongoing.
2020-01-27 23:13:13 +01:00
noah
0a52864764 Revert "Fixes https://github.com/async-rs/async-std/issues/652"
This reverts commit a4f68066
2020-01-14 10:59:17 -06:00
noah
76993dd755 Revert "Fixes https://github.com/async-rs/async-std/issues/652"
This reverts commit a4f68066
2020-01-14 10:55:10 -06:00
noah
a4f6806605 Fixes https://github.com/async-rs/async-std/issues/652 2020-01-13 17:47:51 -06:00
Katharina Fey
081166f204
Fixing inaccurate function description in udp::recv 2019-12-27 03:06:41 +01:00
Toralf Wittner
c90732a805 TcpStream: Shutdown write direction in poll_close.
Fixes #599.
2019-12-12 17:37:38 +01:00
Bryant Luk
fd86effb63
Change recv_from to recv in UdpSocket::recv doc 2019-12-02 13:04:19 -06:00
Pascal Hertleif
56538ebd91 Improve verbose errors for socket addresses
Moves the point of adding error context to the net::addr module so that
we have access to the raw address input and can include it in the error
message.
2019-11-25 23:30:31 +01:00
Pascal Hertleif
aa7d1c27a4
Verbose errors: Apply suggestions
Co-Authored-By: Yoshua Wuyts <yoshuawuyts+github@gmail.com>
2019-11-25 21:18:40 +01:00
Pascal Hertleif
e01f07d72a Add context to more errors
cc #569
2019-11-21 00:27:47 +01:00
yjhmelody
76ec9c4563 update doc url 2019-11-15 14:33:34 +08:00
Stjepan Glavina
548733e5d5
Cleanup stream traits (#487)
* Cleanup stream traits

* Fix docs
2019-11-09 11:22:09 +01:00
Stjepan Glavina
3dd59d7056
Refactor the task module (#421)
* Refactor the task module

* Fix clippy warning

* Simplify task-local entries

* Reduce the amount of future wrapping

* Cleanup

* Simplify stealing
2019-11-01 02:45:33 +01:00
Wu Yu Wei
ff6a44fcd5 Use once_cell instead of lazy_static (#416)
`once_cell` provides a neat way of initializing lazy singletons without
macro. This PR use `sync::Lazy` to streamline same pattern proposed in
related rust RFC.

Resolve #406
2019-10-30 11:23:08 +00:00
Yoshua Wuyts
20abd5cebf
standardize net docs
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-10-28 00:15:13 +01:00
Taiki Endo
2abf5ca891
Deny warnings on CI (#378)
* Deny warnings on CI

* Fix some clippy warnings
2019-10-23 20:20:59 +09:00
Stjepan Glavina
ec23632f3e
Cleanup: replace cfg-if with our macros (#361)
* Cleanup: replace cfg-if with our macros

* Prefix macros with cfg_

* Remove #[macro_export] from internal macros
2019-10-17 19:17:49 +02:00
Yoshua Wuyts
b4c1c63fd2
task::blocking async closure -> FnOnce
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-10-15 16:01:24 +02:00
Stjepan Glavina
c890de2c52 Fix failing doc example 2019-10-09 14:49:31 +02:00
Stjepan Glavina
cbd458b1db Cleanup ToSocketAddrs, add more net reexports 2019-10-09 14:26:14 +02:00
Yoshua Wuyts
9ab7b1ae6e
Merge pull request #251 from async-rs/blocking-unstable
add an unstable `task::blocking` function
2019-10-09 12:32:44 +02:00
Yoshua Wuyts
647aab819f
impl feedback
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-10-08 14:55:09 +02:00
k-nasa
2460f35768 fix: Remove unnecessary Borrowed
Each implements a Copy trait
2019-10-01 18:08:24 +09:00
Stjepan Glavina
edfa2358a4 Re-export IO traits from futures 2019-09-21 14:30:52 +02:00
Stjepan Glavina
2818c7099f Suppress a lint that makes CI fail on windows 2019-09-12 23:24:20 +02:00
Stjepan Glavina
5429c2c0a3 cargo fmt 2019-09-12 18:49:09 +02:00
Stjepan Glavina
d25dae5419 Refactor the networking driver 2019-09-12 18:45:53 +02:00
bors[bot]
7c05356ef4
Merge #148
148: Make sure into_raw_fd doesn't close the file descriptor r=stjepang a=yshui

Closes #147 

Co-authored-by: Yuxuan Shui <yshuiv7@gmail.com>
Co-authored-by: yshui <yshuiv7@gmail.com>
2019-09-08 22:19:29 +00:00
yshui
8e2bf24456
Apply suggestions from code review
Co-Authored-By: Stjepan Glavina <stjepang@gmail.com>
2019-09-08 23:16:34 +01:00
Stjepan Glavina
17c95a39d7
More robust file implementation
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-09-07 23:17:20 +02:00
Yuxuan Shui
876059cfe0
Make sure ownership is transferred in into_raw_fd
Previously all of the into_raw_fd implementations only returns a copy of
the inner RawFd, while still holding the ownership of the file
descriptor when returning for into_raw_fd. Since `self` is dropped at
the end of into_raw_fd, the returned file descriptor will actually be
closed, render the function unuseable.

The patch makes sure that into_raw_fd actually takes the ownership of
the file descriptor all the way from the inner IoHandle. To achieve
this, I have to use an Option in IoHandle to store the I/O source. It's
not pretty, but I cannot come up with a better way.
2019-09-06 10:36:25 +01:00
Stjepan Glavina
bac74c2d7f
Reduce dependency on futures crate (#140)
* Add future::poll_fn

* Replace all uses of poll_fn with the new one

* Remove some uses of futures

* Simplify ReadDir and DirEntry

* Remove some use of futures from File

* Use futures subcrates

* Fix imports in docs

* Remove futures-util dependency

* Remove futures-executor-preview

* Refactor

* Require more features in the futures-preview crate
2019-09-05 01:22:41 +02:00
DCjanus
238a3c882b Implement an async version of ToSocketAddrs (#74)
* Implement an async version of ToSocketAddrs

* fix documentation issue

* genius hack: pretending to be `impl Future`

* replace `std::net::ToSocketAddrs` with `async-std::net::ToSocketAddrs`

* Move unit tests into the tests directory

* Stylistic changes

* Remove re-exports in async_std::net

* fix broken link

* some mirror changes

* remove unnecessary format

* migrate: `std::net::ToSocketAddrs` -> `async_std::net::ToSocketAddrs`

* fix typo(tutorial)

* remove unnecessary type bound

* lifetime for future
2019-09-04 20:09:49 +02:00
Roman Proskuryakov
374f0c9eb8 Refactor TcpStream::connect into resolving loop and TcpStream::connect_to (#119) 2019-08-28 22:09:15 +02:00
Yoshua Wuyts
63ad786768
remove async_await feature gate
Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2019-08-21 00:29:35 -07:00
Andrew Chin
50e69dc765 Fix documention links to docs.rs 2019-08-16 21:50:02 -04:00
Stjepan Glavina
9b3e8b8f26 Use our own Sink/Empty and fix compilation errors 2019-08-15 11:47:20 +02:00
Stjepan Glavina
e459bd048e Cleanup and docs 2019-08-14 04:22:37 +02:00
Stjepan Glavina
019c8085f4 Cleanup examples 2019-08-14 03:47:39 +02:00
Stjepan Glavina
9d8ac36813 Rename feature docs.rs to docs 2019-08-12 19:50:30 +02:00
Stjepan Glavina
68d7a9c34e Refactor 2019-08-12 18:38:59 +02:00
Stjepan Glavina
a430e27819 Cleanup, docs, fmt 2019-08-12 18:00:21 +02:00
Stjepan Glavina
e44451a042 Revamp IO traits and Stream trait 2019-08-12 12:50:35 +02:00
Aleksey Kladov
3ce68814b6 implement FusedStream for net::Incoming 2019-08-09 12:47:48 +02:00
Stjepan Glavina
3f4a56abdc Reformat doc examples 2019-08-09 02:56:59 +02:00
Florian Gilcher
5b0a6269a9
Initial commit 2019-08-08 14:44:48 +02:00