use net_relay::RelayExt;
use std::sync::Arc;
use std::time::Duration;
use http_pool::net_pool::{Address, CHStrategy, debug, Pool};
#[tokio::main]
async fn main() {
init_log();
if let Err(_e) = run().await {
debug!("run error:{:?}", _e);
}
}
async fn run() -> Result<(), net_relay::Error> {
let mut relay = hrelay::http2::Relay::build(|b| {
b.bind("0.0.0.0:3001")
.relay_fn(hrelay::http2::default_relay_fn)
})
.map(|r| r)?;
let pools = relay.pools();
tokio::spawn(async move {
tokio::time::sleep(Duration::from_secs(10)).await;
let mut p = http_pool::http2::Pool::new(
Arc::new(CHStrategy::default()),
Some(20),
);
p.set_id("*");
pools.add_pool(p);
pools.add_backend("*", None, Address::from("127.0.0.1:30097"));
});
loop {
tokio::select! {
res = relay.run() => {
return res;
}
};
}
}
fn init_log() {
#[cfg(feature = "tracing")]
{
tracing_subscriber::fmt()
.with_max_level(tracing::Level::DEBUG)
.init();
}
}