|
1 |
| -use std::pin::Pin; |
2 |
| -use std::sync::Arc; |
3 | 1 |
|
4 | 2 | use async_h1::client;
|
5 |
| -use async_std::io::{self, Read, Write}; |
6 |
| -use async_std::net::{self, TcpStream}; |
7 |
| -use async_std::task::{self, Context, Poll}; |
| 3 | +use async_std::net::{TcpStream}; |
8 | 4 | use http_types::{Error, Method, Request, Url};
|
9 | 5 |
|
10 |
| -fn main() -> Result<(), Error> { |
11 |
| - task::block_on(async { |
12 |
| - let stream = net::TcpStream::connect("127.0.0.1:8080").await?; |
13 |
| - let peer_addr = stream.peer_addr()?; |
14 |
| - println!("connecting to {}", peer_addr); |
15 |
| - |
16 |
| - // TODO: Delete this line when we implement `Clone` for `TcpStream`. |
17 |
| - let stream = Stream(Arc::new(stream)); |
18 |
| - |
19 |
| - for i in 0usize..2 { |
20 |
| - println!("making request {}/2", i + 1); |
21 |
| - let url = Url::parse(&format!("http://{}/foo", peer_addr)).unwrap(); |
22 |
| - let req = Request::new(Method::Get, dbg!(url)); |
23 |
| - let res = client::connect(stream.clone(), req).await?; |
24 |
| - println!("{:?}", res); |
25 |
| - } |
26 |
| - Ok(()) |
27 |
| - }) |
28 |
| -} |
29 |
| - |
30 |
| -#[derive(Clone)] |
31 |
| -struct Stream(Arc<TcpStream>); |
32 |
| - |
33 |
| -impl Read for Stream { |
34 |
| - fn poll_read( |
35 |
| - self: Pin<&mut Self>, |
36 |
| - cx: &mut Context, |
37 |
| - buf: &mut [u8], |
38 |
| - ) -> Poll<io::Result<usize>> { |
39 |
| - Pin::new(&mut &*self.0).poll_read(cx, buf) |
40 |
| - } |
41 |
| -} |
42 |
| - |
43 |
| -impl Write for Stream { |
44 |
| - fn poll_write(self: Pin<&mut Self>, cx: &mut Context, buf: &[u8]) -> Poll<io::Result<usize>> { |
45 |
| - Pin::new(&mut &*self.0).poll_write(cx, buf) |
46 |
| - } |
47 |
| - |
48 |
| - fn poll_flush(self: Pin<&mut Self>, cx: &mut Context) -> Poll<io::Result<()>> { |
49 |
| - Pin::new(&mut &*self.0).poll_flush(cx) |
50 |
| - } |
51 |
| - |
52 |
| - fn poll_close(self: Pin<&mut Self>, cx: &mut Context) -> Poll<io::Result<()>> { |
53 |
| - Pin::new(&mut &*self.0).poll_close(cx) |
| 6 | +#[async_std::main] |
| 7 | +async fn main() -> Result<(), Error> { |
| 8 | + let stream = TcpStream::connect("127.0.0.1:8080").await?; |
| 9 | + let peer_addr = stream.peer_addr()?; |
| 10 | + println!("connecting to {}", peer_addr); |
| 11 | + |
| 12 | + for i in 0usize..2 { |
| 13 | + println!("making request {}/2", i + 1); |
| 14 | + let url = Url::parse(&format!("http://{}/foo", peer_addr)).unwrap(); |
| 15 | + let req = Request::new(Method::Get, dbg!(url)); |
| 16 | + let res = client::connect(stream.clone(), req).await?; |
| 17 | + println!("{:?}", res); |
54 | 18 | }
|
| 19 | + Ok(()) |
55 | 20 | }
|
0 commit comments