use std::{
net::{Ipv4Addr, SocketAddr},
str::FromStr,
};
use scylla_proxy::{Node, Proxy, ShardAwareness};
fn init_logger() {
tracing_subscriber::fmt::fmt()
.with_env_filter(tracing_subscriber::EnvFilter::from_default_env())
.without_time()
.init();
}
async fn pause() {
println!("Press Ctrl-C to stop the proxy...");
tokio::signal::ctrl_c().await.unwrap();
}
#[tokio::main]
async fn main() {
init_logger();
let mut args = std::env::args();
args.next(); let real_addr = args.next();
let proxy_addr = args.next();
let node_real_addr = SocketAddr::new(
std::net::IpAddr::V4(
Ipv4Addr::from_str(real_addr.as_deref().unwrap_or("127.0.0.2")).unwrap(),
),
9042,
);
let node_proxy_addr = SocketAddr::new(
std::net::IpAddr::V4(
Ipv4Addr::from_str(proxy_addr.as_deref().unwrap_or("127.0.0.66")).unwrap(),
),
9042,
);
let proxy = Proxy::new([Node::new(
node_real_addr,
node_proxy_addr,
ShardAwareness::QueryNode,
None,
None,
)]);
let running_proxy = proxy.run().await.unwrap();
pause().await;
running_proxy.finish().await.unwrap();
}