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 tags;
84pub mod typed_point;
85pub mod types;
86pub mod utils;
87pub mod value;
88pub mod version;
89
90// =============================================================================
91// Re-exports for backwards compatibility and convenience
92// =============================================================================
93
94// Error types
95pub use error::{
96 Error, ErrorSeverity, Result, ResultExt, ValidationErrors, ValidationErrorsBuilder,
97};
98
99// Protocol types
100pub use protocol::Protocol;
101
102// Value types
103pub use value::Value;
104pub use version::{release_version, RELEASE_VERSION};
105
106// Configuration types
107pub use config::{
108 ConfigDiscovery,
109 // Watcher
110 ConfigEvent,
111 // Loader
112 ConfigFormat,
113 ConfigLoader,
114 ConfigSource,
115 ConfigWatcher,
116 DeviceConfig,
117 EngineConfig,
118 EnvApplyResult,
119 EnvConfigurable,
120 // Environment
121 EnvOverrides,
122 FileWatcherConfig,
123 // File Watcher
124 FileWatcherService,
125 // Hot Reload
126 HotReloadManager,
127 ReloadEvent,
128 ReloadStrategy,
129 SharedConfigWatcher,
130 // Validation
131 Validatable,
132 ValidationContext,
133 Validator,
134 WatcherState,
135};
136
137// Device types
138pub use device::{Device, DeviceInfo, DeviceState};
139
140// Tags
141pub use tags::{parse_tag_string, parse_tags, Taggable, Tags, TagsBuilder};
142
143// Engine types
144pub use engine::{EnginePreset, SimulatorEngine, SimulatorEngineBuilder};
145
146// Factory types
147pub use factory::{DeviceFactory, FactoryRegistry, Plugin, PluginManager};
148
149// Metrics types
150pub use metrics::MetricsCollector;
151
152// Data point types
153pub use types::{DataPoint, DataPointId, Quality};
154
155// Logging - expanded exports for new modular structure
156pub use logging::{
157 // Initialization
158 init_logging,
159 init_test_logging,
160 is_logging_initialized,
161 shared_context,
162 DebugModeGuard,
163 DeviceContext,
164 // Configuration
165 LogConfig,
166 LogConfigBuilder,
167 LogFileStats,
168 LogFormat,
169 LogLevel,
170 // Dynamic level control
171 LogLevelController,
172 LogTarget,
173 ModuleTraceGuard,
174 RequestContext,
175 RetentionPolicy,
176 // Rotation
177 RotationConfig,
178 RotationStrategy,
179 SharedTraceContext,
180 // Context propagation
181 TraceContext,
182};
183
184// Capabilities
185pub use capabilities::{Capability, CapabilitySet, CapabilitySetBuilder, ProtocolCapabilities};
186
187// Lifecycle
188pub use lifecycle::{DeviceLifecycle, LifecycleEvent, LifecycleStateMachine, StopReason};
189
190// Builders
191pub use device_builder::{device, point, DataPointBuilder, DeviceConfigBuilder};
192
193// Typed points
194pub use typed_point::{
195 BoolPoint, DataPointType, Float32Point, Float64Point, FromDefinition, Int32Point, Int64Point,
196 StringPoint, TypedDataPoint, TypedPointValue, UInt32Point, UInt64Point,
197};
198
199// Profiling
200pub use profiling::{
201 LeakDetector, LeakDetectorConfig, LeakSeverity, LeakWarning, MemoryProfiler,
202 MemoryProfilerConfig, MemoryReport, MemoryReportBuilder, MemorySnapshot, ProfileReport,
203 Profiler, ProfilerConfig, RegionAnalysis, RegionSnapshot, ReportComparison, ReportExporter,
204 ReportFormat,
205};
206
207// Simulation
208pub use simulation::{
209 BurstPattern, CustomMemoryPattern, FailureConfig, FailureInjector, FailureSchedule,
210 FailureType, LeakPattern, LoadPattern, LoadPatternBuilder, MemoryPattern, SawtoothPattern,
211 ScaleConfig, Scenario, ScenarioBuilder, ScenarioSuite, ScheduledFailure, SimulationConfig,
212 SimulationEvent, SimulationMetrics, SimulationPhase, SimulationResult, Simulator,
213 SteppedPattern,
214};