Files
foxhunt/crates/common/src/constants.rs
jgrusewski 9c3d741a08 refactor: restructure repo — crates/, bin/, testing/ layout
Move 17 library crates into crates/, CLI binary into bin/fxt,
consolidate 10 test crates into testing/, split config crate
from deployment config files.

Root directory reduced from 38+ to ~17 directories.
All Cargo.toml paths and build.rs proto refs updated.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 11:56:00 +01:00

176 lines
5.4 KiB
Rust

//! Shared constants and configuration values
//!
//! This module contains constants that are used across multiple
//! services in the Foxhunt HFT trading system.
use std::time::Duration;
/// Maximum query timeout for database operations (milliseconds)
pub const MAX_QUERY_TIMEOUT_MS: u64 = 1000;
/// Default database connection pool size
pub const DEFAULT_POOL_SIZE: u32 = 20;
/// Maximum connection pool size
pub const MAX_POOL_SIZE: u32 = 100;
/// Default health check interval (seconds)
pub const DEFAULT_HEALTH_CHECK_INTERVAL_SECONDS: u64 = 30;
/// Maximum allowed latency for HFT operations (microseconds)
pub const MAX_HFT_LATENCY_MICROS: u64 = 50;
/// Default gRPC port range start
pub const DEFAULT_GRPC_PORT_START: u16 = 50000;
/// Default HTTP port range start
pub const DEFAULT_HTTP_PORT_START: u16 = 8000;
/// Maximum retry attempts for critical operations
pub const MAX_RETRY_ATTEMPTS: u32 = 3;
/// Default timeout for service operations (seconds)
pub const DEFAULT_SERVICE_TIMEOUT_SECONDS: u64 = 30;
/// Configuration refresh interval (seconds)
pub const CONFIG_REFRESH_INTERVAL_SECONDS: u64 = 60;
/// Service defaults configuration
#[derive(Debug)]
pub struct ServiceDefaults;
impl ServiceDefaults {
/// Default database configuration values
pub const DATABASE: DatabaseDefaults = DatabaseDefaults;
/// Default network configuration values
pub const NETWORK: NetworkDefaults = NetworkDefaults;
/// Default performance configuration values
pub const PERFORMANCE: PerformanceDefaults = PerformanceDefaults;
}
/// Database-related default values
#[derive(Debug)]
pub struct DatabaseDefaults;
impl DatabaseDefaults {
/// Default connection timeout
pub const CONNECTION_TIMEOUT: Duration = Duration::from_millis(100);
/// Default query timeout for HFT operations
pub const QUERY_TIMEOUT: Duration = Duration::from_micros(800);
/// Default pool acquire timeout
pub const ACQUIRE_TIMEOUT: Duration = Duration::from_millis(50);
/// Default connection lifetime
pub const CONNECTION_LIFETIME: Duration = Duration::from_secs(3600);
/// Default idle timeout
pub const IDLE_TIMEOUT: Duration = Duration::from_secs(300);
}
/// Network-related default values
///
/// Default network configuration constants
#[derive(Debug)]
pub struct NetworkDefaults;
impl NetworkDefaults {
/// Default connect timeout
pub const CONNECT_TIMEOUT: Duration = Duration::from_millis(5000);
/// Default request timeout
pub const REQUEST_TIMEOUT: Duration = Duration::from_millis(10000);
/// Default keep-alive interval
pub const KEEP_ALIVE_INTERVAL: Duration = Duration::from_secs(30);
/// Default maximum concurrent connections
pub const MAX_CONCURRENT_CONNECTIONS: u32 = 100;
}
/// Performance-related default values
///
/// Default performance configuration constants
#[derive(Debug)]
pub struct PerformanceDefaults;
impl PerformanceDefaults {
/// Default batch size for processing operations
pub const BATCH_SIZE: usize = 100;
/// Default worker thread count (will be adjusted based on CPU cores)
pub const WORKER_THREADS: usize = 4;
/// Default queue capacity
pub const QUEUE_CAPACITY: usize = 10000;
/// Default metrics collection interval
pub const METRICS_INTERVAL: Duration = Duration::from_secs(10);
}
/// Service-specific port assignments
pub mod ports {
/// Trading service gRPC port
pub const TRADING_SERVICE_GRPC: u16 = 50001;
/// Trading service HTTP port
pub const TRADING_SERVICE_HTTP: u16 = 8001;
/// Backtesting service gRPC port
pub const BACKTESTING_SERVICE_GRPC: u16 = 50002;
/// Backtesting service HTTP port
pub const BACKTESTING_SERVICE_HTTP: u16 = 8002;
/// ML training service gRPC port
pub const ML_TRAINING_SERVICE_GRPC: u16 = 50003;
/// ML training service HTTP port
pub const ML_TRAINING_SERVICE_HTTP: u16 = 8003;
/// TLI client port (if needed)
pub const TLI_CLIENT_PORT: u16 = 8004;
}
/// Environment-specific configuration
pub mod environments {
/// Development environment constants
pub mod development {
/// Default log level for development environment
pub const LOG_LEVEL: &str = "debug";
/// Enable detailed logging in development
pub const ENABLE_DETAILED_LOGGING: bool = true;
/// Enable performance monitoring in development
///
/// Enable performance monitoring in staging
///
/// Enable performance monitoring in production
pub const ENABLE_PERFORMANCE_MONITORING: bool = true;
}
/// Staging environment constants
pub mod staging {
/// Default log level for staging environment
pub const LOG_LEVEL: &str = "info";
/// Enable detailed logging in staging (disabled for performance)
pub const ENABLE_DETAILED_LOGGING: bool = false;
/// Enable performance monitoring in staging
pub const ENABLE_PERFORMANCE_MONITORING: bool = true;
}
/// Production environment constants
pub mod production {
/// Default log level for production environment
pub const LOG_LEVEL: &str = "warn";
/// Enable detailed logging in production (disabled for performance)
pub const ENABLE_DETAILED_LOGGING: bool = false;
/// Enable performance monitoring in production
pub const ENABLE_PERFORMANCE_MONITORING: bool = true;
}
}
// ELIMINATED: Re-exports removed to force explicit imports