Skip to main content

mabi_core/
lib.rs

1//! # trap-sim-core
2//!
3//! Core abstractions and utilities for the TRAP protocol simulator.
4//!
5//! This crate provides:
6//! - Device trait and abstractions
7//! - Data point types and value representations
8//! - Simulator engine for managing virtual devices
9//! - Metrics collection and export
10//! - Configuration management with hot reload support
11//! - Structured logging and tracing
12//! - Common utilities and helper functions
13//!
14//! ## Quick Start
15//!
16//! Use the [`prelude`] module for convenient imports:
17//!
18//! ```rust,ignore
19//! use mabi_core::prelude::*;
20//!
21//! #[tokio::main]
22//! async fn main() -> Result<()> {
23//!     // Initialize logging
24//!     init_logging(&LogConfig::development())?;
25//!
26//!     // Create and start the engine
27//!     let config = EngineConfig::default();
28//!     let engine = SimulatorEngine::new(config);
29//!     engine.start().await?;
30//!
31//!     Ok(())
32//! }
33//! ```
34//!
35//! ## Module Overview
36//!
37//! - [`config`]: Configuration types and hot reload support
38//! - [`device`]: Device trait and device management
39//! - [`engine`]: Simulator engine for orchestrating devices
40//! - [`error`]: Error types and result aliases
41//! - [`factory`]: Device factory pattern for extensibility
42//! - [`logging`]: Structured logging and tracing setup
43//! - [`metrics`]: Prometheus metrics collection
44//! - [`protocol`]: Protocol definitions (Modbus, OPC UA, BACnet, KNX)
45//! - [`types`]: Data point types and addresses
46//! - [`utils`]: Utility functions and helper macros
47//! - [`value`]: Dynamic value types
48//! - [`prelude`]: Convenient re-exports for glob imports
49//!
50//! ## Example
51//!
52//! ```rust,no_run
53//! use mabi_core::{SimulatorEngine, EngineConfig, Protocol};
54//!
55//! #[tokio::main]
56//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
57//!     let config = EngineConfig::default();
58//!     let engine = SimulatorEngine::new(config);
59//!
60//!     engine.start().await?;
61//!     Ok(())
62//! }
63//! ```
64
65// =============================================================================
66// Modules
67// =============================================================================
68
69pub mod capabilities;
70pub mod config;
71pub mod device;
72pub mod device_builder;
73pub mod engine;
74pub mod error;
75pub mod factory;
76pub mod lifecycle;
77pub mod logging;
78pub mod metrics;
79pub mod prelude;
80pub mod profiling;
81pub mod protocol;
82pub mod simulation;
83pub mod typed_point;
84pub mod types;
85pub mod utils;
86pub mod value;
87
88// =============================================================================
89// Re-exports for backwards compatibility and convenience
90// =============================================================================
91
92// Error types
93pub use error::{Error, ErrorSeverity, Result, ResultExt, ValidationErrors, ValidationErrorsBuilder};
94
95// Protocol types
96pub use protocol::Protocol;
97
98// Value types
99pub use value::Value;
100
101// Configuration types
102pub use config::{
103    DeviceConfig, EngineConfig,
104    // Loader
105    ConfigFormat, ConfigLoader, ConfigDiscovery,
106    // Environment
107    EnvOverrides, EnvConfigurable, EnvApplyResult,
108    // Validation
109    Validatable, Validator, ValidationContext,
110    // Watcher
111    ConfigEvent, ConfigSource, ConfigWatcher, SharedConfigWatcher, WatcherState,
112    // File Watcher
113    FileWatcherService, FileWatcherConfig,
114    // Hot Reload
115    HotReloadManager, ReloadStrategy, ReloadEvent,
116};
117
118// Device types
119pub use device::{Device, DeviceInfo, DeviceState};
120
121// Engine types
122pub use engine::{EnginePreset, SimulatorEngine, SimulatorEngineBuilder};
123
124// Factory types
125pub use factory::{DeviceFactory, FactoryRegistry, Plugin, PluginManager};
126
127// Metrics types
128pub use metrics::MetricsCollector;
129
130// Data point types
131pub use types::{DataPoint, DataPointId, Quality};
132
133// Logging - expanded exports for new modular structure
134pub use logging::{
135    // Initialization
136    init_logging, init_test_logging, is_logging_initialized,
137    // Configuration
138    LogConfig, LogConfigBuilder, LogLevel, LogFormat, LogTarget,
139    // Rotation
140    RotationConfig, RotationStrategy, RetentionPolicy, LogFileStats,
141    // Dynamic level control
142    LogLevelController, DebugModeGuard, ModuleTraceGuard,
143    // Context propagation
144    TraceContext, RequestContext, DeviceContext, SharedTraceContext, shared_context,
145};
146
147// Capabilities
148pub use capabilities::{Capability, CapabilitySet, CapabilitySetBuilder, ProtocolCapabilities};
149
150// Lifecycle
151pub use lifecycle::{DeviceLifecycle, LifecycleEvent, LifecycleStateMachine, StopReason};
152
153// Builders
154pub use device_builder::{device, point, DataPointBuilder, DeviceConfigBuilder};
155
156// Typed points
157pub use typed_point::{
158    BoolPoint, DataPointType, Float32Point, Float64Point, FromDefinition, Int32Point, Int64Point,
159    StringPoint, TypedDataPoint, TypedPointValue, UInt32Point, UInt64Point,
160};
161
162// Profiling
163pub use profiling::{
164    Profiler, ProfilerConfig, ProfileReport,
165    MemoryProfiler, MemoryProfilerConfig, MemorySnapshot, MemoryReport, RegionSnapshot,
166    LeakDetector, LeakDetectorConfig, LeakWarning, LeakSeverity, RegionAnalysis,
167    ReportExporter, ReportFormat, ReportComparison, MemoryReportBuilder,
168};
169
170// Simulation
171pub use simulation::{
172    Simulator, SimulationConfig, SimulationPhase, SimulationEvent, SimulationMetrics, SimulationResult,
173    ScaleConfig,
174    MemoryPattern, CustomMemoryPattern,
175    SawtoothPattern, SteppedPattern, BurstPattern, LeakPattern,
176    FailureConfig, FailureType, FailureSchedule, ScheduledFailure, FailureInjector,
177    LoadPattern, LoadPatternBuilder,
178    Scenario, ScenarioBuilder, ScenarioSuite,
179};