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 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};