use pingora_core::server::configuration::ServerConf;
use pingora_core::server::Server;
use pingora_proxy::http_proxy_service;
use tracing::info;
use crate::proxy::CodexProxy;
const GRACEFUL_SHUTDOWN_TIMEOUT: u64 = 30;
const GRACEFUL_PERIOD: u64 = 10;
pub fn start_proxy_server(
proxy: CodexProxy,
listen: &str,
) {
let mut server_conf = ServerConf::new().expect("Failed to create server config");
server_conf.grace_period_seconds = Some(GRACEFUL_PERIOD);
server_conf.graceful_shutdown_timeout_seconds = Some(GRACEFUL_SHUTDOWN_TIMEOUT);
let mut server = Server::new_with_opt_and_conf(None, server_conf);
let mut http_proxy = http_proxy_service(&server.configuration, proxy);
http_proxy.add_tcp(listen);
server.add_service(http_proxy);
info!("Server listening on {}", listen);
info!("Graceful shutdown: {}s grace period, {}s timeout",
GRACEFUL_PERIOD, GRACEFUL_SHUTDOWN_TIMEOUT);
server.run_forever();
}