dmsc/
lib.rs

1//! Copyright © 2025-2026 Wenze Wei. All Rights Reserved.
2//!
3//! This file is part of DMSC.
4//! The DMSC project belongs to the Dunimd Team.
5//!
6//! Licensed under the Apache License, Version 2.0 (the "License");
7//! You may not use this file except in compliance with the License.
8//! You may obtain a copy of the License at
9//!
10//!     http://www.apache.org/licenses/LICENSE-2.0
11//!
12//! Unless required by applicable law or agreed to in writing, software
13//! distributed under the License is distributed on an "AS IS" BASIS,
14//! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15//! See the License for the specific language governing permissions and
16//! limitations under the License.
17
18//! # DMSC (Dunimd Middleware Service) Library
19//! 
20//! This is the main entry point for the DMSC library, which provides a comprehensive
21//! middleware service framework for building enterprise-grade backend applications.
22//! 
23//! ## Core Modules
24//! 
25//! DMSC is organized into 12 core modules, each responsible for a specific set of functionalities:
26//! 
27//! - **core**: Core runtime, application builder, and service context
28//! - **fs**: Secure file system operations and management
29//! - **log**: Structured logging with tracing integration
30//! - **config**: Multi-source configuration management
31//! - **hooks**: Lifecycle event hooks for modules
32//! - **observability**: Metrics, tracing, and monitoring support
33//! - **device**: Device management and scheduling
34//! - **cache**: Multi-backend cache abstraction
35//! - **queue**: Distributed queue management
36//! - **gateway**: API gateway with load balancing and rate limiting
37//! - **service_mesh**: Service discovery and traffic management
38//! - **auth**: Authentication and authorization mechanisms
39//! 
40//! ## Prelude
41//! 
42//! The `prelude` module re-exports commonly used types and traits for convenient access,
43//! allowing users to import all essential components with a single `use dmsc::prelude::*;` statement.
44
45/// Core runtime, application builder, and service context
46pub mod core;
47/// Secure file system operations and management
48pub mod fs;
49/// Structured logging with tracing integration
50pub mod log;
51/// Multi-source configuration management
52pub mod config;
53/// Lifecycle event hooks for modules
54pub mod hooks;
55/// Metrics, tracing, and monitoring support
56pub mod observability;
57/// Device management and scheduling
58pub mod device;
59/// Multi-backend cache abstraction
60pub mod cache;
61/// Distributed queue management
62pub mod queue;
63/// API gateway with load balancing and rate limiting
64pub mod gateway;
65/// Service discovery and traffic management
66pub mod service_mesh;
67/// Authentication and authorization mechanisms
68pub mod auth;
69/// Database abstraction layer with multiple backend support
70pub mod database;
71/// Protocol abstraction layer for multiple protocol support
72#[cfg(feature = "protocol")]
73pub mod protocol;
74/// Validation utilities for input validation and data sanitization
75pub mod validation;
76/// Inter-module RPC communication for distributed method calls
77pub mod module_rpc;
78/// gRPC server and client support
79#[cfg(feature = "grpc")]
80pub mod grpc;
81/// WebSocket server and client support
82#[cfg(feature = "websocket")]
83pub mod ws;
84/// C/C++ API support
85#[cfg(feature = "c")]
86pub mod c;
87/// Java JNI bindings support
88#[cfg(feature = "java")]
89pub mod java;
90
91/// Common re-exports for convenient access to core functionality
92/// 
93/// This module provides a single import point for all commonly used DMSC components,
94/// simplifying application code and reducing the number of import statements.
95/// 
96/// ## Usage
97/// 
98/// ```rust,ignore
99/// use dmsc::prelude::*;
100/// 
101/// #[tokio::main]
102/// async fn main() -> DMSCResult<()> {
103///     let app = DMSCAppBuilder::new()
104///         .with_config("config.yaml")?
105///         .build()?;
106///     
107///     app.run(|ctx| async move {
108///         ctx.logger().info("service", "DMSC service started")?;
109///         Ok(())
110///     }).await
111/// }
112/// ```
113pub mod prelude {
114    // Re-export commonly used public classes here.
115    // Only DMSCXxxXxx format classes are exposed in prelude
116    
117    /// Application builder for constructing DMSC applications
118    pub use crate::core::{DMSCAppBuilder, DMSCAppRuntime};
119    /// Service context providing access to application resources
120    pub use crate::core::DMSCServiceContext;
121    /// Module traits for extending DMSC functionality
122    pub use crate::core::DMSCModule;
123    /// Error type used throughout DMSC
124    pub use crate::core::DMSCError;
125    /// Result type alias using DMSCError
126    pub use crate::core::DMSCResult;
127    
128    /// Lock utilities - Only DMSCLockError is available in Python
129    /// Note: DMSCLockResult, RwLockExtensions, MutexExtensions, and from_poison_error
130    /// are Rust-only types and not exposed in Python bindings
131    #[cfg(feature = "pyo3")]
132    pub use crate::core::DMSCLockError;
133    
134    /// Python module support
135    #[cfg(feature = "pyo3")]
136    pub use crate::core::{DMSCPythonModule, DMSCPythonModuleAdapter, DMSCPythonServiceModule, DMSCPythonAsyncServiceModule};
137    
138    /// Error chain utilities
139    #[cfg(feature = "pyo3")]
140    pub use crate::core::{DMSCErrorChain, DMSCErrorChainIter, DMSCErrorContext, DMSCOptionErrorContext};
141    
142    /// Health check types
143    #[cfg(feature = "pyo3")]
144    pub use crate::core::{DMSCHealthStatus, DMSCHealthCheckResult, DMSCHealthCheckConfig, DMSCHealthReport, DMSCHealthChecker};
145    
146    /// Service mesh health check types
147    #[cfg(feature = "pyo3")]
148    pub use crate::service_mesh::health_check::{DMSCHealthCheckType, DMSCHealthSummary};
149    
150    /// Lifecycle management
151    #[cfg(feature = "pyo3")]
152    pub use crate::core::DMSCLifecycleObserver;
153    
154    /// Analytics module
155    #[cfg(feature = "pyo3")]
156    pub use crate::core::DMSCLogAnalyticsModule;
157    
158    /// Secure file system operations
159    pub use crate::fs::DMSCFileSystem;
160    
161    /// Structured logger with tracing integration
162    pub use crate::log::DMSCLogger;
163    /// Log configuration structure
164    pub use crate::log::DMSCLogConfig;
165    /// Log level enum
166    pub use crate::log::DMSCLogLevel;
167    
168    /// Configuration management
169    pub use crate::config::DMSCConfig;
170    /// Configuration manager for multi-source configuration
171    pub use crate::config::DMSCConfigManager;
172    
173    /// Hook bus for managing lifecycle events
174    pub use crate::hooks::DMSCHookBus;
175    /// Hook event structure
176    pub use crate::hooks::DMSCHookEvent;
177    /// Hook kind enum
178    pub use crate::hooks::DMSCHookKind;
179    /// Module lifecycle phase definition
180    pub use crate::hooks::DMSCModulePhase;
181    
182    /// Main cache module for DMSC
183    pub use crate::cache::DMSCCacheModule;
184    /// Cache configuration structure
185    pub use crate::cache::DMSCCacheConfig;
186    
187    /// Main queue module for DMSC
188    pub use crate::queue::DMSCQueueModule;
189    /// Queue configuration structure
190    pub use crate::queue::DMSCQueueConfig;
191    
192    /// Main gateway struct implementing the DMSCModule trait
193    pub use crate::gateway::DMSCGateway;
194    /// Configuration for the DMSC Gateway
195    pub use crate::gateway::DMSCGatewayConfig;
196    /// Route definition for API endpoints
197    pub use crate::gateway::DMSCRoute;
198    /// Router for handling request routing
199    pub use crate::gateway::DMSCRouter;
200    /// Backend server for load balancing
201    pub use crate::gateway::load_balancer::DMSCBackendServer;
202    /// Load balancer server statistics
203    pub use crate::gateway::load_balancer::DMSCLoadBalancerServerStats;
204    /// Load balancer implementation
205    pub use crate::gateway::load_balancer::DMSCLoadBalancer;
206    /// Load balancing strategy enum
207    pub use crate::gateway::load_balancer::DMSCLoadBalancerStrategy;
208    
209    /// Main device control module for DMSC
210    pub use crate::device::DMSCDeviceControlModule;
211    /// Configuration for device discovery
212    pub use crate::device::DMSCDeviceControlConfig;
213    /// Scheduling configuration for device control
214    pub use crate::device::DMSCDeviceSchedulingConfig;
215    /// Device representation with type, status, and capabilities
216    pub use crate::device::DMSCDevice;
217    /// Enum defining supported device types
218    pub use crate::device::DMSCDeviceType;
219    
220    /// Main authentication module for DMSC
221    pub use crate::auth::DMSCAuthModule;
222    /// Configuration for the authentication module
223    pub use crate::auth::DMSCAuthConfig;
224    
225    /// Main service mesh struct implementing the DMSCModule trait
226    pub use crate::service_mesh::DMSCServiceMesh;
227    /// Configuration for the service mesh
228    pub use crate::service_mesh::DMSCServiceMeshConfig;
229    /// Statistics for the service mesh
230    pub use crate::service_mesh::DMSCServiceMeshStats;
231    /// Service endpoint information
232    pub use crate::service_mesh::DMSCServiceEndpoint;
233    /// Service health status enum
234    pub use crate::service_mesh::DMSCServiceHealthStatus;
235    
236    /// Main observability module for DMSC
237    pub use crate::observability::DMSCObservabilityModule;
238    /// Configuration for the observability module
239    pub use crate::observability::DMSCObservabilityConfig;
240    /// Distributed tracing implementation
241    pub use crate::observability::DMSCTracer;
242    /// Metrics collection and aggregation
243    pub use crate::observability::DMSCMetricsRegistry;
244    
245    /// Database configuration structure
246    pub use crate::database::DMSCDatabaseConfig;
247    /// Database type enum
248    pub use crate::database::DatabaseType;
249    /// Database connection pool
250    pub use crate::database::DMSCDatabasePool;
251    /// Database row representation
252    pub use crate::database::DMSCDBRow;
253    /// Database query result
254    pub use crate::database::DMSCDBResult;
255    
256    /// Inter-module RPC coordinator
257    pub use crate::module_rpc::DMSCModuleRPC;
258    /// RPC client for making method calls
259    pub use crate::module_rpc::DMSCModuleClient;
260    /// RPC endpoint for a module
261    pub use crate::module_rpc::DMSCModuleEndpoint;
262    /// RPC method call request
263    pub use crate::module_rpc::DMSCMethodCall;
264    /// RPC method call response
265    pub use crate::module_rpc::DMSCMethodResponse;
266}
267
268/// Python bindings for DMSC
269#[cfg(feature = "pyo3")]
270pub mod py {
271    use pyo3::prelude::*;
272    use pyo3::types::PyModule;
273    use crate::prelude::*;
274    
275    /// Initialize the Python module
276    #[pymodule]
277    pub fn dmsc(m: &Bound<'_, PyModule>) -> PyResult<()> {
278        // Add core types that implement PyClass
279        m.add_class::<DMSCAppBuilder>()?;
280        m.add_class::<DMSCAppRuntime>()?;
281        m.add_class::<DMSCConfig>()?;
282        m.add_class::<DMSCConfigManager>()?;
283        m.add_class::<DMSCError>()?;
284        m.add_class::<DMSCServiceContext>()?;
285        
286        // Add Python module support
287        m.add_class::<crate::core::module::DMSCPythonModule>()?;
288        m.add_class::<crate::core::module::DMSCPythonModuleAdapter>()?;
289        m.add_class::<crate::core::module::DMSCPythonServiceModule>()?;
290        m.add_class::<crate::core::module::DMSCPythonAsyncServiceModule>()?;
291        
292        // Add other core types
293        m.add_class::<DMSCLogger>()?;
294        m.add_class::<DMSCLogConfig>()?;
295        m.add_class::<DMSCLogLevel>()?;
296        m.add_class::<DMSCFileSystem>()?;
297        m.add_class::<DMSCHookBus>()?;
298        m.add_class::<DMSCHookEvent>()?;
299        m.add_class::<DMSCHookKind>()?;
300        m.add_class::<DMSCModulePhase>()?;
301        
302        // Add lock types
303        m.add_class::<crate::core::DMSCLockError>()?;
304        
305        // Add health check types
306        m.add_class::<crate::core::DMSCHealthStatus>()?;
307        m.add_class::<crate::core::DMSCHealthCheckResult>()?;
308        m.add_class::<crate::core::DMSCHealthCheckConfig>()?;
309        m.add_class::<crate::core::DMSCHealthReport>()?;
310        m.add_class::<crate::service_mesh::health_check::DMSCHealthCheckType>()?;
311        m.add_class::<crate::service_mesh::health_check::DMSCHealthSummary>()?;
312        m.add_class::<crate::service_mesh::traffic_management::DMSCTrafficManager>()?;
313        
314        // Add lifecycle types
315        m.add_class::<crate::core::DMSCLifecycleObserver>()?;
316        
317        // Add analytics types
318        m.add_class::<crate::core::DMSCLogAnalyticsModule>()?;
319        
320        // Add cache types to main module
321        m.add_class::<crate::cache::DMSCCacheModule>()?;
322        m.add_class::<crate::cache::DMSCCacheManager>()?;
323        m.add_class::<crate::cache::DMSCCacheConfig>()?;
324        m.add_class::<crate::cache::DMSCCacheBackendType>()?;
325        m.add_class::<crate::cache::DMSCCachePolicy>()?;
326        m.add_class::<crate::cache::DMSCCacheStats>()?;
327        m.add_class::<crate::cache::DMSCCachedValue>()?;
328        m.add_class::<crate::cache::DMSCCacheEvent>()?;
329        
330        // Add queue types to main module
331        m.add_class::<crate::queue::DMSCQueueModule>()?;
332        m.add_class::<crate::queue::DMSCQueueConfig>()?;
333        m.add_class::<crate::queue::DMSCQueueManager>()?;
334        m.add_class::<crate::queue::DMSCQueueMessage>()?;
335        m.add_class::<crate::queue::DMSCQueueStats>()?;
336        m.add_class::<crate::queue::DMSCQueueBackendType>()?;
337        m.add_class::<crate::queue::DMSCRetryPolicy>()?;
338        m.add_class::<crate::queue::DMSCDeadLetterConfig>()?;
339        
340        // Add gateway types to main module
341        m.add_class::<crate::gateway::DMSCGateway>()?;
342        m.add_class::<crate::gateway::DMSCGatewayConfig>()?;
343        m.add_class::<crate::gateway::DMSCRouter>()?;
344        m.add_class::<crate::gateway::DMSCRoute>()?;
345        m.add_class::<crate::gateway::rate_limiter::DMSCRateLimiter>()?;
346        m.add_class::<crate::gateway::rate_limiter::DMSCRateLimitConfig>()?;
347        m.add_class::<crate::gateway::rate_limiter::DMSCRateLimitStats>()?;
348        m.add_class::<crate::gateway::rate_limiter::DMSCSlidingWindowRateLimiter>()?;
349        m.add_class::<crate::gateway::circuit_breaker::DMSCCircuitBreaker>()?;
350        m.add_class::<crate::gateway::circuit_breaker::DMSCCircuitBreakerConfig>()?;
351        m.add_class::<crate::gateway::circuit_breaker::DMSCCircuitBreakerState>()?;
352        m.add_class::<crate::gateway::circuit_breaker::DMSCCircuitBreakerMetrics>()?;
353        
354        // Add load balancer types to main module
355        m.add_class::<crate::gateway::load_balancer::DMSCBackendServer>()?;
356        m.add_class::<crate::gateway::load_balancer::DMSCLoadBalancerServerStats>()?;
357        m.add_class::<crate::gateway::load_balancer::DMSCLoadBalancer>()?;
358        m.add_class::<crate::gateway::load_balancer::DMSCLoadBalancerStrategy>()?;
359        
360        // Add service mesh types to main module
361        m.add_class::<crate::service_mesh::DMSCServiceMesh>()?;
362        m.add_class::<crate::service_mesh::DMSCServiceMeshConfig>()?;
363        m.add_class::<crate::service_mesh::DMSCServiceDiscovery>()?;
364        m.add_class::<crate::service_mesh::DMSCServiceInstance>()?;
365        m.add_class::<crate::service_mesh::DMSCServiceStatus>()?;
366        m.add_class::<crate::service_mesh::DMSCServiceMeshStats>()?;
367        m.add_class::<crate::service_mesh::DMSCServiceEndpoint>()?;
368        m.add_class::<crate::service_mesh::DMSCServiceHealthStatus>()?;
369        m.add_class::<crate::service_mesh::health_check::DMSCHealthChecker>()?;
370        m.add_class::<crate::service_mesh::health_check::DMSCHealthSummary>()?;
371        m.add_class::<crate::service_mesh::traffic_management::DMSCTrafficManager>()?;
372        m.add_class::<crate::service_mesh::DMSCTrafficRoute>()?;
373        m.add_class::<crate::service_mesh::DMSCMatchCriteria>()?;
374        m.add_class::<crate::service_mesh::DMSCRouteAction>()?;
375        m.add_class::<crate::service_mesh::DMSCWeightedDestination>()?;
376        
377        // Add auth types to main module
378        m.add_class::<crate::auth::DMSCAuthModule>()?;
379        m.add_class::<crate::auth::DMSCAuthConfig>()?;
380        m.add_class::<crate::auth::DMSCJWTManager>()?;
381        m.add_class::<crate::auth::DMSCJWTClaims>()?;
382        m.add_class::<crate::auth::DMSCJWTValidationOptions>()?;
383        m.add_class::<crate::auth::DMSCSessionManager>()?;
384        m.add_class::<crate::auth::DMSCSession>()?;
385        m.add_class::<crate::auth::DMSCPermissionManager>()?;
386        m.add_class::<crate::auth::DMSCOAuthManager>()?;
387        m.add_class::<crate::auth::DMSCOAuthToken>()?;
388        m.add_class::<crate::auth::DMSCOAuthUserInfo>()?;
389        m.add_class::<crate::auth::DMSCOAuthProvider>()?;
390        m.add_class::<crate::auth::DMSCPermission>()?;
391        m.add_class::<crate::auth::DMSCRole>()?;
392        m.add_class::<crate::auth::DMSCJWTRevocationList>()?;
393        m.add_class::<crate::auth::DMSCRevokedTokenInfo>()?;
394        
395        // Add observability types to main module
396        m.add_class::<crate::observability::DMSCObservabilityModule>()?;
397        m.add_class::<crate::observability::DMSCObservabilityConfig>()?;
398        m.add_class::<crate::observability::DMSCMetricsRegistry>()?;
399        m.add_class::<crate::observability::DMSCTracer>()?;
400        m.add_class::<crate::observability::DMSCMetricType>()?;
401        m.add_class::<crate::observability::DMSCMetricConfig>()?;
402        m.add_class::<crate::observability::DMSCMetricSample>()?;
403        m.add_class::<crate::observability::DMSCMetric>()?;
404        m.add_class::<crate::observability::DMSCObservabilityData>()?;
405        
406        // Add system metrics collector types (requires system_info feature)
407        #[cfg(feature = "system_info")]
408        {
409            m.add_class::<crate::observability::DMSCSystemMetricsCollector>()?;
410            m.add_class::<crate::observability::DMSCSystemMetrics>()?;
411            m.add_class::<crate::observability::DMSCCPUMetrics>()?;
412            m.add_class::<crate::observability::DMSCMemoryMetrics>()?;
413            m.add_class::<crate::observability::DMSCDiskMetrics>()?;
414            m.add_class::<crate::observability::DMSCNetworkMetrics>()?;
415        }
416        
417        // Add validation types to main module
418        m.add_class::<crate::validation::DMSCValidationError>()?;
419        m.add_class::<crate::validation::DMSCValidationResult>()?;
420        m.add_class::<crate::validation::DMSCValidationSeverity>()?;
421        m.add_class::<crate::validation::DMSCValidatorBuilder>()?;
422        m.add_class::<crate::validation::DMSCValidationRunner>()?;
423        m.add_class::<crate::validation::DMSCSanitizer>()?;
424        m.add_class::<crate::validation::DMSCSanitizationConfig>()?;
425        m.add_class::<crate::validation::DMSCSchemaValidator>()?;
426        m.add_class::<crate::validation::DMSCValidationModule>()?;
427        
428        // Add protocol types to main module
429        #[cfg(feature = "protocol")]
430        {
431            m.add_class::<crate::protocol::DMSCProtocolManager>()?;
432            m.add_class::<crate::protocol::DMSCProtocolType>()?;
433            m.add_class::<crate::protocol::DMSCProtocolConfig>()?;
434            m.add_class::<crate::protocol::DMSCProtocolStatus>()?;
435            m.add_class::<crate::protocol::DMSCProtocolStats>()?;
436            m.add_class::<crate::protocol::DMSCConnectionState>()?;
437            m.add_class::<crate::protocol::DMSCConnectionStats>()?;
438            m.add_class::<crate::protocol::DMSCProtocolHealth>()?;
439            m.add_class::<crate::protocol::DMSCFrame>()?;
440            m.add_class::<crate::protocol::DMSCFrameHeader>()?;
441            m.add_class::<crate::protocol::DMSCFrameType>()?;
442            m.add_class::<crate::protocol::DMSCConnectionInfo>()?;
443            m.add_class::<crate::protocol::DMSCMessageFlags>()?;
444            m.add_class::<crate::protocol::DMSCSecurityLevel>()?;
445            m.add_class::<crate::protocol::frames::DMSCFrameParser>()?;
446            m.add_class::<crate::protocol::frames::DMSCFrameBuilder>()?;
447        }
448
449        // Add database types to main module
450        m.add_class::<crate::database::DMSCDatabaseConfig>()?;
451        m.add_class::<crate::database::DMSCDatabasePool>()?;
452        m.add_class::<crate::database::DMSCDBRow>()?;
453        m.add_class::<crate::database::DMSCDBResult>()?;
454        m.add_class::<crate::database::orm::DMSCPyORMRepository>()?;
455
456        // Add grpc types to main module
457        #[cfg(all(feature = "grpc", feature = "pyo3"))]
458        {
459            m.add_class::<crate::grpc::DMSCGrpcConfig>()?;
460            m.add_class::<crate::grpc::DMSCGrpcStats>()?;
461            m.add_class::<crate::grpc::DMSCGrpcServiceRegistryPy>()?;
462            m.add_class::<crate::grpc::DMSCGrpcServerPy>()?;
463            m.add_class::<crate::grpc::DMSCGrpcClientPy>()?;
464        }
465
466        // Add websocket types to main module
467        #[cfg(all(feature = "websocket", feature = "pyo3"))]
468        {
469            m.add_class::<crate::ws::DMSCWSServerConfig>()?;
470            m.add_class::<crate::ws::DMSCWSEvent>()?;
471            m.add_class::<crate::ws::DMSCWSSessionInfo>()?;
472            m.add_class::<crate::ws::DMSCWSServerStats>()?;
473            m.add_class::<crate::ws::DMSCWSPythonHandler>()?;
474            m.add_class::<crate::ws::DMSCWSSessionManagerPy>()?;
475            m.add_class::<crate::ws::DMSCWSServerPy>()?;
476            m.add_class::<crate::ws::DMSCWSClientConfig>()?;
477            m.add_class::<crate::ws::DMSCWSClientStats>()?;
478            m.add_class::<crate::ws::DMSCWSClientPy>()?;
479        }
480
481        // Add module_rpc types to main module
482        m.add_class::<crate::module_rpc::DMSCModuleRPC>()?;
483        m.add_class::<crate::module_rpc::DMSCModuleClient>()?;
484        m.add_class::<crate::module_rpc::DMSCModuleEndpoint>()?;
485        m.add_class::<crate::module_rpc::DMSCMethodCall>()?;
486        m.add_class::<crate::module_rpc::DMSCMethodResponse>()?;
487        
488        // Add device types to main module
489        m.add_class::<crate::device::DMSCDeviceControlModule>()?;
490        m.add_class::<crate::device::DMSCDevice>()?;
491        m.add_class::<crate::device::DMSCDeviceType>()?;
492        m.add_class::<crate::device::DMSCDeviceStatus>()?;
493        m.add_class::<crate::device::DMSCDeviceCapabilities>()?;
494        m.add_class::<crate::device::DMSCDeviceHealthMetrics>()?;
495        m.add_class::<crate::device::DMSCDeviceController>()?;
496        m.add_class::<crate::device::DMSCDeviceConfig>()?;
497        m.add_class::<crate::device::DMSCDeviceControlConfig>()?;
498        m.add_class::<crate::device::DMSCDeviceSchedulingConfig>()?;
499        m.add_class::<crate::device::DMSCNetworkDeviceInfo>()?;
500        m.add_class::<crate::device::DMSCDiscoveryResult>()?;
501        m.add_class::<crate::device::DMSCResourceRequest>()?;
502        m.add_class::<crate::device::DMSCResourceAllocation>()?;
503        m.add_class::<crate::device::DMSCRequestSlaClass>()?;
504        m.add_class::<crate::device::DMSCResourceWeights>()?;
505        m.add_class::<crate::device::DMSCAffinityRules>()?;
506        m.add_class::<crate::device::DMSCResourcePoolStatus>()?;
507        m.add_class::<crate::device::pool::DMSCResourcePool>()?;
508        m.add_class::<crate::device::pool::DMSCResourcePoolConfig>()?;
509        m.add_class::<crate::device::pool::DMSCResourcePoolStatistics>()?;
510        m.add_class::<crate::device::pool::DMSCResourcePoolManager>()?;
511        m.add_class::<crate::device::pool::DMSCConnectionPoolStatistics>()?;
512        m.add_class::<crate::device::scheduler::DMSCResourceScheduler>()?;
513        m.add_class::<crate::device::scheduler::DMSCDeviceScheduler>()?;
514        m.add_class::<crate::device::scheduler::DMSCSchedulingPolicy>()?;
515        m.add_class::<crate::device::scheduler::DMSCAllocationRecord>()?;
516        m.add_class::<crate::device::scheduler::DMSCAllocationRequest>()?;
517        m.add_class::<crate::device::scheduler::DMSCAllocationStatistics>()?;
518        m.add_class::<crate::device::scheduler::DMSCDeviceTypeStatistics>()?;
519        m.add_class::<crate::device::scheduler::DMSCSchedulingRecommendation>()?;
520        m.add_class::<crate::device::scheduler::DMSCSchedulingRecommendationType>()?;
521        m.add_class::<crate::device::DMSCDeviceDiscoveryEngine>()?;
522        
523        // Add database migration type
524        m.add_class::<crate::database::DMSCDatabaseMigration>()?;
525        
526        // Create and add submodules
527        create_device_module(m)?;
528        create_cache_module(m)?;
529        create_fs_module(m)?;
530        create_hooks_module(m)?;
531        create_observability_module(m)?;
532        create_queue_module(m)?;
533        create_gateway_module(m)?;
534        create_service_mesh_module(m)?;
535        create_auth_module(m)?;
536        create_database_module(m)?;
537        create_validation_module(m)?;
538        #[cfg(feature = "protocol")]
539        create_protocol_module(m)?;
540        create_grpc_module(m)?;
541        create_ws_module(m)?;
542
543        Ok(())
544    }
545
546    fn create_device_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
547        let m = PyModule::new(parent.py(), "device")?;
548        
549        m.add_class::<crate::device::DMSCDeviceControlModule>()?;
550        m.add_class::<crate::device::DMSCDevice>()?;
551        m.add_class::<crate::device::DMSCDeviceType>()?;
552        m.add_class::<crate::device::DMSCDeviceStatus>()?;
553        m.add_class::<crate::device::DMSCDeviceCapabilities>()?;
554        m.add_class::<crate::device::DMSCDeviceHealthMetrics>()?;
555        m.add_class::<crate::device::DMSCDeviceController>()?;
556        m.add_class::<crate::device::DMSCDeviceConfig>()?;
557        m.add_class::<crate::device::DMSCDeviceControlConfig>()?;
558        m.add_class::<crate::device::DMSCDeviceSchedulingConfig>()?;
559        m.add_class::<crate::device::DMSCNetworkDeviceInfo>()?;
560        m.add_class::<crate::device::DMSCDiscoveryResult>()?;
561        m.add_class::<crate::device::DMSCResourceRequest>()?;
562        m.add_class::<crate::device::DMSCResourceAllocation>()?;
563        m.add_class::<crate::device::DMSCRequestSlaClass>()?;
564        m.add_class::<crate::device::DMSCResourceWeights>()?;
565        m.add_class::<crate::device::DMSCAffinityRules>()?;
566        m.add_class::<crate::device::pool::DMSCResourcePool>()?;
567        m.add_class::<crate::device::pool::DMSCResourcePoolConfig>()?;
568        m.add_class::<crate::device::pool::DMSCResourcePoolStatistics>()?;
569        m.add_class::<crate::device::pool::DMSCResourcePoolManager>()?;
570        m.add_class::<crate::device::pool::DMSCConnectionPoolStatistics>()?;
571        m.add_class::<crate::device::scheduler::DMSCResourceScheduler>()?;
572        m.add_class::<crate::device::scheduler::DMSCDeviceScheduler>()?;
573        m.add_class::<crate::device::scheduler::DMSCSchedulingPolicy>()?;
574        m.add_class::<crate::device::scheduler::DMSCAllocationRecord>()?;
575        m.add_class::<crate::device::scheduler::DMSCAllocationRequest>()?;
576        m.add_class::<crate::device::scheduler::DMSCAllocationStatistics>()?;
577        m.add_class::<crate::device::scheduler::DMSCDeviceTypeStatistics>()?;
578        m.add_class::<crate::device::scheduler::DMSCSchedulingRecommendation>()?;
579        m.add_class::<crate::device::scheduler::DMSCSchedulingRecommendationType>()?;
580        m.add_class::<crate::device::DMSCDeviceDiscoveryEngine>()?;
581        
582        parent.add_submodule(&m)?;
583        Ok(())
584    }
585    
586    fn create_cache_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
587        let m = PyModule::new(parent.py(), "cache")?;
588        
589        // Add cache types to the cache module
590        m.add_class::<crate::cache::DMSCCacheModule>()?;
591        m.add_class::<crate::cache::DMSCCacheManager>()?;
592        m.add_class::<crate::cache::DMSCCacheConfig>()?;
593        m.add_class::<crate::cache::DMSCCacheBackendType>()?;
594        m.add_class::<crate::cache::DMSCCachePolicy>()?;
595        m.add_class::<crate::cache::DMSCCacheStats>()?;
596        m.add_class::<crate::cache::DMSCCachedValue>()?;
597        m.add_class::<crate::cache::DMSCCacheEvent>()?;
598        
599        parent.add_submodule(&m)?;
600        Ok(())
601    }
602    
603    fn create_fs_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
604        let m = PyModule::new(parent.py(), "fs")?;
605        m.add_class::<crate::fs::DMSCFileSystem>()?;
606        parent.add_submodule(&m)?;
607        Ok(())
608    }
609    
610    fn create_hooks_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
611        let m = PyModule::new(parent.py(), "hooks")?;
612        m.add_class::<crate::hooks::DMSCHookKind>()?;
613        m.add_class::<crate::hooks::DMSCModulePhase>()?;
614        m.add_class::<crate::hooks::DMSCHookEvent>()?;
615        m.add_class::<crate::hooks::DMSCHookBus>()?;
616        parent.add_submodule(&m)?;
617        Ok(())
618    }
619    
620    fn create_observability_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
621        let m = PyModule::new(parent.py(), "observability")?;
622        m.add_class::<crate::observability::DMSCObservabilityModule>()?;
623        m.add_class::<crate::observability::DMSCObservabilityConfig>()?;
624        m.add_class::<crate::observability::DMSCObservabilityData>()?;
625        m.add_class::<crate::observability::DMSCMetricsRegistry>()?;
626        m.add_class::<crate::observability::DMSCTracer>()?;
627        m.add_class::<crate::observability::DMSCMetricType>()?;
628        m.add_class::<crate::observability::DMSCMetricConfig>()?;
629        m.add_class::<crate::observability::DMSCMetricSample>()?;
630        m.add_class::<crate::observability::DMSCMetric>()?;
631        #[cfg(feature = "system_info")]
632        {
633            m.add_class::<crate::observability::DMSCSystemMetricsCollector>()?;
634            m.add_class::<crate::observability::DMSCSystemMetrics>()?;
635            m.add_class::<crate::observability::DMSCCPUMetrics>()?;
636            m.add_class::<crate::observability::DMSCMemoryMetrics>()?;
637            m.add_class::<crate::observability::DMSCDiskMetrics>()?;
638            m.add_class::<crate::observability::DMSCNetworkMetrics>()?;
639        }
640        parent.add_submodule(&m)?;
641        Ok(())
642    }
643    
644    fn create_queue_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
645        let m = PyModule::new(parent.py(), "queue")?;
646        m.add_class::<crate::queue::DMSCQueueModule>()?;
647        m.add_class::<crate::queue::DMSCQueueConfig>()?;
648        m.add_class::<crate::queue::DMSCQueueManager>()?;
649        m.add_class::<crate::queue::DMSCQueueMessage>()?;
650        m.add_class::<crate::queue::DMSCQueueStats>()?;
651        m.add_class::<crate::queue::DMSCQueueBackendType>()?;
652        m.add_class::<crate::queue::DMSCRetryPolicy>()?;
653        m.add_class::<crate::queue::DMSCDeadLetterConfig>()?;
654        parent.add_submodule(&m)?;
655        Ok(())
656    }
657    
658    fn create_gateway_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
659        let m = PyModule::new(parent.py(), "gateway")?;
660        m.add_class::<crate::gateway::DMSCGateway>()?;
661        m.add_class::<crate::gateway::DMSCGatewayConfig>()?;
662        m.add_class::<crate::gateway::DMSCRoute>()?;
663        m.add_class::<crate::gateway::DMSCRouter>()?;
664        m.add_class::<crate::gateway::rate_limiter::DMSCRateLimiter>()?;
665        m.add_class::<crate::gateway::rate_limiter::DMSCRateLimitConfig>()?;
666        m.add_class::<crate::gateway::rate_limiter::DMSCRateLimitStats>()?;
667        m.add_class::<crate::gateway::rate_limiter::DMSCSlidingWindowRateLimiter>()?;
668        m.add_class::<crate::gateway::circuit_breaker::DMSCCircuitBreaker>()?;
669        m.add_class::<crate::gateway::circuit_breaker::DMSCCircuitBreakerConfig>()?;
670        m.add_class::<crate::gateway::circuit_breaker::DMSCCircuitBreakerState>()?;
671        m.add_class::<crate::gateway::circuit_breaker::DMSCCircuitBreakerMetrics>()?;
672        m.add_class::<crate::gateway::load_balancer::DMSCBackendServer>()?;
673        m.add_class::<crate::gateway::load_balancer::DMSCLoadBalancerServerStats>()?;
674        m.add_class::<crate::gateway::load_balancer::DMSCLoadBalancer>()?;
675        m.add_class::<crate::gateway::load_balancer::DMSCLoadBalancerStrategy>()?;
676        parent.add_submodule(&m)?;
677        Ok(())
678    }
679    
680    fn create_service_mesh_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
681        let m = PyModule::new(parent.py(), "service_mesh")?;
682        m.add_class::<crate::service_mesh::DMSCServiceMesh>()?;
683        m.add_class::<crate::service_mesh::DMSCServiceMeshConfig>()?;
684        m.add_class::<crate::service_mesh::DMSCServiceDiscovery>()?;
685        m.add_class::<crate::service_mesh::DMSCServiceInstance>()?;
686        m.add_class::<crate::service_mesh::DMSCServiceStatus>()?;
687        m.add_class::<crate::service_mesh::DMSCServiceMeshStats>()?;
688        m.add_class::<crate::service_mesh::DMSCServiceEndpoint>()?;
689        m.add_class::<crate::service_mesh::DMSCServiceHealthStatus>()?;
690        m.add_class::<crate::service_mesh::health_check::DMSCHealthChecker>()?;
691        m.add_class::<crate::service_mesh::health_check::DMSCHealthSummary>()?;
692        m.add_class::<crate::service_mesh::health_check::DMSCHealthCheckType>()?;
693        m.add_class::<crate::service_mesh::traffic_management::DMSCTrafficManager>()?;
694        m.add_class::<crate::service_mesh::traffic_management::DMSCTrafficRoute>()?;
695        m.add_class::<crate::service_mesh::traffic_management::DMSCMatchCriteria>()?;
696        m.add_class::<crate::service_mesh::traffic_management::DMSCRouteAction>()?;
697        m.add_class::<crate::service_mesh::traffic_management::DMSCWeightedDestination>()?;
698        parent.add_submodule(&m)?;
699        Ok(())
700    }
701    
702    fn create_auth_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
703        let m = PyModule::new(parent.py(), "auth")?;
704        m.add_class::<crate::auth::DMSCAuthModule>()?;
705        m.add_class::<crate::auth::DMSCAuthConfig>()?;
706        m.add_class::<crate::auth::DMSCJWTManager>()?;
707        m.add_class::<crate::auth::DMSCJWTClaims>()?;
708        m.add_class::<crate::auth::DMSCJWTValidationOptions>()?;
709        m.add_class::<crate::auth::DMSCSessionManager>()?;
710        m.add_class::<crate::auth::DMSCSession>()?;
711        m.add_class::<crate::auth::DMSCPermissionManager>()?;
712        m.add_class::<crate::auth::DMSCPermission>()?;
713        m.add_class::<crate::auth::DMSCRole>()?;
714        m.add_class::<crate::auth::DMSCOAuthManager>()?;
715        m.add_class::<crate::auth::DMSCOAuthToken>()?;
716        m.add_class::<crate::auth::DMSCOAuthUserInfo>()?;
717        m.add_class::<crate::auth::DMSCOAuthProvider>()?;
718        m.add_class::<crate::auth::DMSCJWTRevocationList>()?;
719        m.add_class::<crate::auth::DMSCRevokedTokenInfo>()?;
720        parent.add_submodule(&m)?;
721        Ok(())
722    }
723    
724    fn create_database_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
725        let m = PyModule::new(parent.py(), "database")?;
726        m.add_class::<crate::database::DMSCDatabaseConfig>()?;
727        m.add_class::<crate::database::DMSCDBRow>()?;
728        m.add_class::<crate::database::DMSCDBResult>()?;
729        m.add_class::<crate::database::orm::ColumnDefinition>()?;
730        m.add_class::<crate::database::orm::IndexDefinition>()?;
731        m.add_class::<crate::database::orm::ForeignKeyDefinition>()?;
732        m.add_class::<crate::database::orm::TableDefinition>()?;
733        m.add_class::<crate::database::orm::ComparisonOperator>()?;
734        m.add_class::<crate::database::orm::LogicalOperator>()?;
735        m.add_class::<crate::database::orm::Criteria>()?;
736        m.add_class::<crate::database::orm::JoinClause>()?;
737        m.add_class::<crate::database::orm::SortOrder>()?;
738        m.add_class::<crate::database::orm::Pagination>()?;
739        m.add_class::<crate::database::orm::QueryBuilder>()?;
740        m.add_class::<crate::database::orm::JoinType>()?;
741        m.add_class::<crate::database::orm::DMSCPyORMRepository>()?;
742        parent.add_submodule(&m)?;
743        Ok(())
744    }
745    
746    fn create_validation_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
747        let m = PyModule::new(parent.py(), "validation")?;
748        m.add_class::<crate::validation::DMSCValidationError>()?;
749        m.add_class::<crate::validation::DMSCValidationResult>()?;
750        m.add_class::<crate::validation::DMSCValidationSeverity>()?;
751        m.add_class::<crate::validation::DMSCValidatorBuilder>()?;
752        m.add_class::<crate::validation::DMSCValidationRunner>()?;
753        m.add_class::<crate::validation::DMSCSanitizer>()?;
754        m.add_class::<crate::validation::DMSCSanitizationConfig>()?;
755        m.add_class::<crate::validation::DMSCSchemaValidator>()?;
756        m.add_class::<crate::validation::DMSCValidationModule>()?;
757        parent.add_submodule(&m)?;
758        Ok(())
759    }
760    
761    #[cfg(feature = "protocol")]
762    fn create_protocol_module(_parent: &Bound<'_, PyModule>) -> PyResult<()> {
763        let m = PyModule::new(_parent.py(), "protocol")?;
764        m.add_class::<crate::protocol::DMSCProtocolManager>()?;
765        m.add_class::<crate::protocol::DMSCProtocolType>()?;
766        m.add_class::<crate::protocol::DMSCProtocolConfig>()?;
767        m.add_class::<crate::protocol::DMSCProtocolStatus>()?;
768        m.add_class::<crate::protocol::DMSCProtocolStats>()?;
769        m.add_class::<crate::protocol::DMSCConnectionState>()?;
770        m.add_class::<crate::protocol::DMSCConnectionStats>()?;
771        m.add_class::<crate::protocol::DMSCProtocolHealth>()?;
772        m.add_class::<crate::protocol::DMSCFrame>()?;
773        m.add_class::<crate::protocol::DMSCFrameHeader>()?;
774        m.add_class::<crate::protocol::DMSCFrameType>()?;
775        m.add_class::<crate::protocol::DMSCConnectionInfo>()?;
776        m.add_class::<crate::protocol::DMSCMessageFlags>()?;
777        m.add_class::<crate::protocol::DMSCSecurityLevel>()?;
778        m.add_class::<crate::protocol::frames::DMSCFrameParser>()?;
779        m.add_class::<crate::protocol::frames::DMSCFrameBuilder>()?;
780        _parent.add_submodule(&m)?;
781        Ok(())
782    }
783    
784    fn create_grpc_module(_parent: &Bound<'_, PyModule>) -> PyResult<()> {
785        #[cfg(all(feature = "grpc", feature = "pyo3"))]
786        {
787            let m = PyModule::new(_parent.py(), "grpc")?;
788            m.add_class::<crate::grpc::DMSCGrpcConfig>()?;
789            m.add_class::<crate::grpc::DMSCGrpcStats>()?;
790            m.add_class::<crate::grpc::DMSCGrpcServiceRegistryPy>()?;
791            m.add_class::<crate::grpc::DMSCGrpcServerPy>()?;
792            m.add_class::<crate::grpc::DMSCGrpcClientPy>()?;
793            _parent.add_submodule(&m)?;
794        }
795        #[cfg(not(all(feature = "grpc", feature = "pyo3")))]
796        {
797            let _ = _parent;
798        }
799        Ok(())
800    }
801    
802    fn create_ws_module(_parent: &Bound<'_, PyModule>) -> PyResult<()> {
803        #[cfg(all(feature = "websocket", feature = "pyo3"))]
804        {
805            let m = PyModule::new(_parent.py(), "ws")?;
806            m.add_class::<crate::ws::DMSCWSServerConfig>()?;
807            m.add_class::<crate::ws::DMSCWSEvent>()?;
808            m.add_class::<crate::ws::DMSCWSSessionInfo>()?;
809            m.add_class::<crate::ws::DMSCWSServerStats>()?;
810            m.add_class::<crate::ws::DMSCWSPythonHandler>()?;
811            m.add_class::<crate::ws::DMSCWSSessionManagerPy>()?;
812            m.add_class::<crate::ws::DMSCWSServerPy>()?;
813            m.add_class::<crate::ws::DMSCWSClientConfig>()?;
814            m.add_class::<crate::ws::DMSCWSClientStats>()?;
815            m.add_class::<crate::ws::DMSCWSClientPy>()?;
816            _parent.add_submodule(&m)?;
817        }
818        #[cfg(not(all(feature = "websocket", feature = "pyo3")))]
819        {
820            let _ = _parent;
821        }
822        Ok(())
823    }
824}