]>
git.proxmox.com Git - proxmox-backup.git/blob - examples/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
;
11 fn main() -> Result
<(), Error
> {
12 proxmox_backup
::tools
::runtime
::main(run())
15 async
fn run() -> Result
<(), Error
> {
16 let mut listener
= TcpListener
::bind(std
::net
::SocketAddr
::from(([127,0,0,1], 8008))).await?
;
18 println
!("listening on {:?}", listener
.local_addr());
21 let (socket
, _addr
) = listener
.accept().await?
;
22 tokio
::spawn(handle_connection(socket
)
24 if let Err(err
) = res
{
25 eprintln
!("Error: {}", err
);
31 async
fn handle_connection
<T
: AsyncRead
+ AsyncWrite
+ Unpin
>(socket
: T
) -> Result
<(), Error
> {
32 let mut conn
= h2
::server
::handshake(socket
).await?
;
34 println
!("H2 connection bound");
36 while let Some((request
, mut respond
)) = conn
.try_next().await?
{
37 println
!("GOT request: {:?}", request
);
39 let response
= http
::Response
::builder()
40 .status(http
::StatusCode
::OK
)
44 let send
= respond
.send_response(response
, false).unwrap();
45 let data
= vec
![65u8; 1024*1024];
46 PipeToSendStream
::new(bytes
::Bytes
::from(data
), send
).await?
;
47 println
!("DATA SENT");