]>
git.proxmox.com Git - proxmox-backup.git/blob - src/bin/h2server.rs
4 // Simple H2 server to test H2 speed with h2client.rs
6 use tokio
::net
::TcpListener
;
7 use tokio
::io
::{AsyncRead, AsyncWrite}
;
9 use proxmox_backup
::client
::pipe_to_stream
::PipeToSendStream
;
12 async
fn main() -> Result
<(), Error
> {
13 let mut listener
= TcpListener
::bind(std
::net
::SocketAddr
::from(([127,0,0,1], 8008))).await?
;
15 println
!("listening on {:?}", listener
.local_addr());
18 let (socket
, _addr
) = listener
.accept().await?
;
19 tokio
::spawn(handle_connection(socket
)
21 if let Err(err
) = res
{
22 eprintln
!("Error: {}", err
);
28 async
fn handle_connection
<T
: AsyncRead
+ AsyncWrite
+ Unpin
>(socket
: T
) -> Result
<(), Error
> {
29 let mut conn
= h2
::server
::handshake(socket
).await?
;
31 println
!("H2 connection bound");
33 while let Some((request
, mut respond
)) = conn
.try_next().await?
{
34 println
!("GOT request: {:?}", request
);
36 let response
= http
::Response
::builder()
37 .status(http
::StatusCode
::OK
)
41 let send
= respond
.send_response(response
, false).unwrap();
42 let data
= vec
![65u8; 1024*1024];
43 PipeToSendStream
::new(bytes
::Bytes
::from(data
), send
).await?
;
44 println
!("DATA SENT");