//! 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; } } /// Re-export for backward compatibility pub use ServiceDefaults as SERVICE_DEFAULTS;