use rt_hft_engine::{HFTEngine, EngineConfig};
use std::error::Error;
use tokio::time::{sleep, Duration};
use tracing::info;
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
tracing_subscriber::fmt()
.with_max_level(tracing::Level::INFO)
.init();
info!("🚀 RT HFT Engine - Simple Trader Demo");
info!("Target: 337ns minimum latency on Dell XPS 13 9350");
let config = EngineConfig::new()
.cpu_affinity(vec![2, 3]) .huge_pages(true) .realtime_priority(99) .network_optimization(true);
info!("Configuration: {:?}", config);
let mut engine = HFTEngine::new(config).await?;
info!("Starting engine for 10 seconds...");
let start_time = std::time::Instant::now();
tokio::spawn(async move {
if let Err(e) = engine.start().await {
eprintln!("Engine error: {}", e);
}
});
for i in 0..10 {
sleep(Duration::from_secs(1)).await;
info!("Trading... {}s elapsed", i + 1);
}
let elapsed = start_time.elapsed();
info!("Demo completed in {:?}", elapsed);
Ok(())
}