Crates.io | asynk-hyper |
lib.rs | asynk-hyper |
version | 0.1.1 |
source | src |
created_at | 2024-11-06 07:06:50.147511 |
updated_at | 2024-11-06 16:06:18.572169 |
description | Hyper integration with asynk runtime |
homepage | |
repository | https://github.com/bells307/asynk-rt.git |
max_upload_size | |
id | 1437835 |
size | 25,431 |
Hyper integration with asynk
runtime
use asynk_hyper::TcpListener;
use futures::StreamExt;
use http_body_util::Full;
use hyper::{body::Bytes, server::conn::http1, service::service_fn, Request, Response};
use std::convert::Infallible;
const SERVER_SOCK_ADDR: &str = "127.0.0.1:8040";
fn main() {
asynk::builder().build().unwrap();
asynk::block_on(server()).unwrap();
}
async fn server() {
let addr = SERVER_SOCK_ADDR.parse().unwrap();
let listener = TcpListener::bind(addr).unwrap();
let mut accept = listener.accept();
while let Some(res) = accept.next().await {
// Spawn new task for the connection
asynk::spawn(async move {
// Accept the connection
let (stream, _) = res.unwrap();
if let Err(e) = http1::Builder::new()
.serve_connection(stream, service_fn(hello))
.await
{
eprintln!("error serving connection: {:?}", e);
}
});
}
}
async fn hello(_: Request<impl hyper::body::Body>) -> Result<Response<Full<Bytes>>, Infallible> {
Ok(Response::new(Full::new(Bytes::from(
"<h1>Hello, World!</h1>",
))))
}