codex_convert_proxy/
server.rs1use pingora_core::server::configuration::ServerConf;
6use pingora_core::server::Server;
7use pingora_proxy::http_proxy_service;
8use tracing::info;
9
10use crate::proxy::CodexProxy;
11
12const GRACEFUL_SHUTDOWN_TIMEOUT: u64 = 30;
14
15const GRACEFUL_PERIOD: u64 = 10;
17
18pub fn start_proxy_server(
24 proxy: CodexProxy,
25 listen: &str,
26) {
27 let mut server_conf = ServerConf::new().expect("Failed to create server config");
29 server_conf.grace_period_seconds = Some(GRACEFUL_PERIOD);
30 server_conf.graceful_shutdown_timeout_seconds = Some(GRACEFUL_SHUTDOWN_TIMEOUT);
31
32 let mut server = Server::new_with_opt_and_conf(None, server_conf);
33
34 let mut http_proxy = http_proxy_service(&server.configuration, proxy);
35 http_proxy.add_tcp(listen);
36
37 server.add_service(http_proxy);
38
39 info!("Server listening on {}", listen);
40 info!("Graceful shutdown: {}s grace period, {}s timeout",
41 GRACEFUL_PERIOD, GRACEFUL_SHUTDOWN_TIMEOUT);
42 server.run_forever();
43}