#timeout #sleep #data-stream #proxy #reset #async-std #tokio

no-std async-shared-timeout

Async timeout that can be reset and shared

5 releases

0.2.2 Mar 20, 2024
0.2.1 Mar 19, 2024
0.2.0 Dec 7, 2022
0.1.1 Dec 7, 2022
0.1.0 Dec 7, 2022

#798 in Asynchronous

Download history 280/week @ 2024-11-29 77/week @ 2024-12-06 147/week @ 2024-12-13 110/week @ 2024-12-20 134/week @ 2024-12-27 217/week @ 2025-01-03 209/week @ 2025-01-10 381/week @ 2025-01-17 195/week @ 2025-01-24 284/week @ 2025-01-31 97/week @ 2025-02-07 97/week @ 2025-02-14 147/week @ 2025-02-21 92/week @ 2025-02-28 326/week @ 2025-03-07 126/week @ 2025-03-14

704 downloads per month
Used in overtls

0BSD OR MIT OR Apache-2.0

30KB
575 lines

crates.io docs.rs

Async Shared Timeout

A Rust crate for creating a shared timeout. A sample use case is having multiple streams open from the client, and expiring them only when all of them stopped sending data. Another example is a proxy with a timeout - the proxy times out only when both the local and the remote ends time out.

Feature flags:

Wrapper

  • wrapper - enable a wrapper around types that you can use for easier resetting. By default, only future support is enabled (reset the timer upon future completion).
  • read-write - enable async Read/Write trait support for the wrapper (reset the timer upon successful read/write operations)
  • stream - enable Stream support for the wrapper (reset the timer upon stream advancement).

Integration with other runtimes

  • std (enabled by default) - enable std integration. Currently it's only used to enable Arc and AsRawFd support for the wrapper.
  • tokio (enabled by default) - tokio support
  • async-io - support async-io as the timer runtime.
  • futures-io - support futures-io traits.
  • async-std - async-std support (enables async-io and futures-io).

Changelog

  • 0.1.0 - initial release
  • 0.1.1 - AsRawFd support for Wrapper
  • 0.2.0 - minor API cleanup
  • 0.2.1 - updated dependencies, added Timeout::new_tokio
  • 0.2.2 - add TokioTimeout and TokioWrapper type aliases

License

TL;DR do whatever you want.

Licensed under either the BSD Zero Clause License (https://opensource.org/licenses/0BSD), the Apache 2.0 License (http://www.apache.org/licenses/LICENSE-2.0) or the MIT License (http://opensource.org/licenses/MIT), at your choice.

Dependencies

~3–14MB
~175K SLoC