lob-orderbook 0.1.1

High-performance limit order book with real-time market depth updates, NATS integration, and SQLite metrics
Documentation
#![allow(dead_code)]
#![allow(unused_imports)]

mod a0_limit_order_book;

use a0_limit_order_book::{print_best_ask_loop, run_limit_order_book_full, BrokerConfig};
use anyhow::{Context, Result};
use std::sync::Arc;

#[tokio::main]
async fn main() -> Result<()> {
    // Initialize the full limit order book system and get access to the store
    let config = BrokerConfig {
        broker_name: "dummy".to_string(),
        health_port: 8024,
    };
    let order_books = run_limit_order_book_full(config)
        .await
        .context("Limit order book system failed")?;
    let logger = order_books.logger().clone();

    // Spawn print loops for monitoring order book data
    // These run independently and print best bid/ask for configured symbols
    let symbols_to_monitor = vec!["NSE_INR_BANKNIFTY_INDEX"];

    for symbol in symbols_to_monitor {
        let store_clone = Arc::clone(&order_books);
        let logger_clone = logger.clone();
        tokio::spawn(async move {
            print_best_ask_loop(store_clone, logger_clone, symbol).await;
        });
    }

    // The main system runs indefinitely - this prevents exit
    // In production, you'd want a graceful shutdown signal here
    tokio::signal::ctrl_c().await?;

    println!("\nReceived shutdown signal, exiting...");
    Ok(())
}