Http with io timeouts (#42)

* Add simple http example with a timeout

* Update lib.rs simple http example comment

* Move to current io module
pull/45/head
Florian Gilcher 5 years ago committed by Stjepan Glavina
parent 2391db9003
commit fa407b18c0

@ -49,6 +49,42 @@ fn main() {
}
```
## Low-Friction Sockets with Built-In Timeouts
```rust
#![feature(async_await)]
use std::time::Duration;
use async_std::{
prelude::*,
task,
io,
net::TcpStream,
};
async fn get() -> io::Result<Vec<u8>> {
let mut stream = TcpStream::connect("example.com:80").await?;
stream.write_all(b"GET /index.html HTTP/1.0\r\n\r\n").await?;
let mut buf = vec![];
io::timeout(Duration::from_secs(5), async {
stream.read_to_end(&mut buf).await?
Ok(buf)
})
}
fn main() {
task::block_on(async {
let raw_response = get().await.expect("request");
let response = String::from_utf8(raw_response)
.expect("utf8 conversion");
println!("received: {}", response);
});
}
```
## Take a look around
Clone the repo:

@ -22,6 +22,42 @@
//! })
//! }
//! ```
//!
//! Use sockets in a familiar way, with low-friction built-in timeouts:
//!
//! ```no_run
//! #![feature(async_await)]
//!
//! use std::time::Duration;
//!
//! use async_std::{
//! prelude::*,
//! task,
//! io,
//! net::TcpStream,
//! };
//!
//! async fn get() -> io::Result<Vec<u8>> {
//! let mut stream = TcpStream::connect("example.com:80").await?;
//! stream.write_all(b"GET /index.html HTTP/1.0\r\n\r\n").await?;
//!
//! let mut buf = vec![];
//!
//! io::timeout(Duration::from_secs(5), async {
//! stream.read_to_end(&mut buf).await?
//! Ok(buf)
//! })
//! }
//!
//! fn main() {
//! task::block_on(async {
//! let raw_response = get().await.expect("request");
//! let response = String::from_utf8(raw_response)
//! .expect("utf8 conversion");
//! println!("received: {}", response);
//! });
//! }
//! ```
#![feature(async_await)]
#![cfg_attr(feature = "docs", feature(doc_cfg))]

Loading…
Cancel
Save