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