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