Skip to main content

ri/
lib.rs

1//! Copyright © 2025-2026 Wenze Wei. All Rights Reserved.
2//!
3//! This file is part of Ri.
4//! The Ri 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//! # Ri (Ri) Library
19//! 
20//! This is the main entry point for the Ri library, which provides a comprehensive
21//! middleware service framework for building enterprise-grade backend applications.
22//! 
23//! ## Core Modules
24//! 
25//! Ri 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 ri::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 Ri components,
94/// simplifying application code and reducing the number of import statements.
95/// 
96/// ## Usage
97/// 
98/// ```rust,ignore
99/// use ri::prelude::*;
100/// 
101/// #[tokio::main]
102/// async fn main() -> RiResult<()> {
103///     let app = RiAppBuilder::new()
104///         .with_config("config.yaml")?
105///         .build()?;
106///     
107///     app.run(|ctx| async move {
108///         ctx.logger().info("service", "Ri service started")?;
109///         Ok(())
110///     }).await
111/// }
112/// ```
113pub mod prelude {
114    // Re-export commonly used public classes here.
115    // Only RiXxxXxx format classes are exposed in prelude
116    
117    /// Application builder for constructing Ri applications
118    pub use crate::core::{RiAppBuilder, RiAppRuntime};
119    /// Service context providing access to application resources
120    pub use crate::core::RiServiceContext;
121    /// Module traits for extending Ri functionality
122    pub use crate::core::RiModule;
123    /// Error type used throughout Ri
124    pub use crate::core::RiError;
125    /// Result type alias using RiError
126    pub use crate::core::RiResult;
127    
128    /// Lock utilities - Only RiLockError is available in Python
129    /// Note: RiLockResult, 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::RiLockError;
133    
134    /// Python module support
135    #[cfg(feature = "pyo3")]
136    pub use crate::core::{RiPythonModule, RiPythonModuleAdapter, RiPythonServiceModule, RiPythonAsyncServiceModule};
137    
138    /// Error chain utilities
139    #[cfg(feature = "pyo3")]
140    pub use crate::core::{RiErrorChain, RiErrorChainIter, RiErrorContext, RiOptionErrorContext};
141    
142    /// Health check types
143    #[cfg(feature = "pyo3")]
144    pub use crate::core::{RiHealthStatus, RiHealthCheckResult, RiHealthCheckConfig, RiHealthReport, RiHealthChecker};
145    
146    /// Service mesh health check types
147    #[cfg(feature = "pyo3")]
148    pub use crate::service_mesh::health_check::{RiHealthCheckType, RiHealthSummary};
149    
150    /// Lifecycle management
151    #[cfg(feature = "pyo3")]
152    pub use crate::core::RiLifecycleObserver;
153    
154    /// Analytics module
155    #[cfg(feature = "pyo3")]
156    pub use crate::core::RiLogAnalyticsModule;
157    
158    /// Secure file system operations
159    pub use crate::fs::RiFileSystem;
160    
161    /// Structured logger with tracing integration
162    pub use crate::log::RiLogger;
163    /// Log configuration structure
164    pub use crate::log::RiLogConfig;
165    /// Log level enum
166    pub use crate::log::RiLogLevel;
167    
168    /// Configuration management
169    pub use crate::config::RiConfig;
170    /// Configuration manager for multi-source configuration
171    pub use crate::config::RiConfigManager;
172    
173    /// Hook bus for managing lifecycle events
174    pub use crate::hooks::RiHookBus;
175    /// Hook event structure
176    pub use crate::hooks::RiHookEvent;
177    /// Hook kind enum
178    pub use crate::hooks::RiHookKind;
179    /// Module lifecycle phase definition
180    pub use crate::hooks::RiModulePhase;
181    
182    /// Main cache module for Ri
183    pub use crate::cache::RiCacheModule;
184    /// Cache configuration structure
185    pub use crate::cache::RiCacheConfig;
186    
187    /// Main queue module for Ri
188    pub use crate::queue::RiQueueModule;
189    /// Queue configuration structure
190    pub use crate::queue::RiQueueConfig;
191    
192    /// Main gateway struct implementing the RiModule trait
193    pub use crate::gateway::RiGateway;
194    /// Configuration for the Ri Gateway
195    pub use crate::gateway::RiGatewayConfig;
196    /// Route definition for API endpoints
197    pub use crate::gateway::RiRoute;
198    /// Router for handling request routing
199    pub use crate::gateway::RiRouter;
200    /// Backend server for load balancing
201    pub use crate::gateway::load_balancer::RiBackendServer;
202    /// Load balancer server statistics
203    pub use crate::gateway::load_balancer::RiLoadBalancerServerStats;
204    /// Load balancer implementation
205    pub use crate::gateway::load_balancer::RiLoadBalancer;
206    /// Load balancing strategy enum
207    pub use crate::gateway::load_balancer::RiLoadBalancerStrategy;
208    
209    /// Main device control module for Ri
210    pub use crate::device::RiDeviceControlModule;
211    /// Configuration for device discovery
212    pub use crate::device::RiDeviceControlConfig;
213    /// Scheduling configuration for device control
214    pub use crate::device::RiDeviceSchedulingConfig;
215    /// Device representation with type, status, and capabilities
216    pub use crate::device::RiDevice;
217    /// Enum defining supported device types
218    pub use crate::device::RiDeviceType;
219    
220    /// Main authentication module for Ri
221    pub use crate::auth::RiAuthModule;
222    /// Configuration for the authentication module
223    pub use crate::auth::RiAuthConfig;
224    
225    /// Main service mesh struct implementing the RiModule trait
226    pub use crate::service_mesh::RiServiceMesh;
227    /// Configuration for the service mesh
228    pub use crate::service_mesh::RiServiceMeshConfig;
229    /// Statistics for the service mesh
230    pub use crate::service_mesh::RiServiceMeshStats;
231    /// Service endpoint information
232    pub use crate::service_mesh::RiServiceEndpoint;
233    /// Service health status enum
234    pub use crate::service_mesh::RiServiceHealthStatus;
235    
236    /// Main observability module for Ri
237    pub use crate::observability::RiObservabilityModule;
238    /// Configuration for the observability module
239    pub use crate::observability::RiObservabilityConfig;
240    /// Distributed tracing implementation
241    pub use crate::observability::RiTracer;
242    /// Metrics collection and aggregation
243    pub use crate::observability::RiMetricsRegistry;
244    
245    /// Database configuration structure
246    pub use crate::database::RiDatabaseConfig;
247    /// Database type enum
248    pub use crate::database::DatabaseType;
249    /// Database connection pool
250    pub use crate::database::RiDatabasePool;
251    /// Database row representation
252    pub use crate::database::RiDBRow;
253    /// Database query result
254    pub use crate::database::RiDBResult;
255    
256    /// Inter-module RPC coordinator
257    pub use crate::module_rpc::RiModuleRPC;
258    /// RPC client for making method calls
259    pub use crate::module_rpc::RiModuleClient;
260    /// RPC endpoint for a module
261    pub use crate::module_rpc::RiModuleEndpoint;
262    /// RPC method call request
263    pub use crate::module_rpc::RiMethodCall;
264    /// RPC method call response
265    pub use crate::module_rpc::RiMethodResponse;
266}
267
268/// Python bindings for Ri
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 ri(m: &Bound<'_, PyModule>) -> PyResult<()> {
278        // Add core types that implement PyClass
279        m.add_class::<RiAppBuilder>()?;
280        m.add_class::<RiAppRuntime>()?;
281        m.add_class::<RiConfig>()?;
282        m.add_class::<RiConfigManager>()?;
283        m.add_class::<RiError>()?;
284        m.add_class::<RiServiceContext>()?;
285        
286        // Add Python module support
287        m.add_class::<crate::core::module::RiPythonModule>()?;
288        m.add_class::<crate::core::module::RiPythonModuleAdapter>()?;
289        m.add_class::<crate::core::module::RiPythonServiceModule>()?;
290        m.add_class::<crate::core::module::RiPythonAsyncServiceModule>()?;
291        
292        // Add other core types
293        m.add_class::<RiLogger>()?;
294        m.add_class::<RiLogConfig>()?;
295        m.add_class::<RiLogLevel>()?;
296        m.add_class::<RiFileSystem>()?;
297        m.add_class::<RiHookBus>()?;
298        m.add_class::<RiHookEvent>()?;
299        m.add_class::<RiHookKind>()?;
300        m.add_class::<RiModulePhase>()?;
301        
302        // Add lock types
303        m.add_class::<crate::core::RiLockError>()?;
304        
305        // Add health check types
306        m.add_class::<crate::core::RiHealthStatus>()?;
307        m.add_class::<crate::core::RiHealthCheckResult>()?;
308        m.add_class::<crate::core::RiHealthCheckConfig>()?;
309        m.add_class::<crate::core::RiHealthReport>()?;
310        m.add_class::<crate::service_mesh::health_check::RiHealthCheckType>()?;
311        m.add_class::<crate::service_mesh::health_check::RiHealthSummary>()?;
312        m.add_class::<crate::service_mesh::traffic_management::RiTrafficManager>()?;
313        
314        // Add lifecycle types
315        m.add_class::<crate::core::RiLifecycleObserver>()?;
316        
317        // Add analytics types
318        m.add_class::<crate::core::RiLogAnalyticsModule>()?;
319        
320        // Add cache types to main module
321        m.add_class::<crate::cache::RiCacheModule>()?;
322        m.add_class::<crate::cache::RiCacheManager>()?;
323        m.add_class::<crate::cache::RiCacheConfig>()?;
324        m.add_class::<crate::cache::RiCacheBackendType>()?;
325        m.add_class::<crate::cache::RiCachePolicy>()?;
326        m.add_class::<crate::cache::RiCacheStats>()?;
327        m.add_class::<crate::cache::RiCachedValue>()?;
328        m.add_class::<crate::cache::RiCacheEvent>()?;
329        
330        // Add queue types to main module
331        m.add_class::<crate::queue::RiQueueModule>()?;
332        m.add_class::<crate::queue::RiQueueConfig>()?;
333        m.add_class::<crate::queue::RiQueueManager>()?;
334        m.add_class::<crate::queue::RiQueueMessage>()?;
335        m.add_class::<crate::queue::RiQueueStats>()?;
336        m.add_class::<crate::queue::RiQueueBackendType>()?;
337        m.add_class::<crate::queue::RiRetryPolicy>()?;
338        m.add_class::<crate::queue::RiDeadLetterConfig>()?;
339        
340        // Add gateway types to main module
341        m.add_class::<crate::gateway::RiGateway>()?;
342        m.add_class::<crate::gateway::RiGatewayConfig>()?;
343        m.add_class::<crate::gateway::RiRouter>()?;
344        m.add_class::<crate::gateway::RiRoute>()?;
345        m.add_class::<crate::gateway::rate_limiter::RiRateLimiter>()?;
346        m.add_class::<crate::gateway::rate_limiter::RiRateLimitConfig>()?;
347        m.add_class::<crate::gateway::rate_limiter::RiRateLimitStats>()?;
348        m.add_class::<crate::gateway::rate_limiter::RiSlidingWindowRateLimiter>()?;
349        m.add_class::<crate::gateway::circuit_breaker::RiCircuitBreaker>()?;
350        m.add_class::<crate::gateway::circuit_breaker::RiCircuitBreakerConfig>()?;
351        m.add_class::<crate::gateway::circuit_breaker::RiCircuitBreakerState>()?;
352        m.add_class::<crate::gateway::circuit_breaker::RiCircuitBreakerMetrics>()?;
353        
354        // Add load balancer types to main module
355        m.add_class::<crate::gateway::load_balancer::RiBackendServer>()?;
356        m.add_class::<crate::gateway::load_balancer::RiLoadBalancerServerStats>()?;
357        m.add_class::<crate::gateway::load_balancer::RiLoadBalancer>()?;
358        m.add_class::<crate::gateway::load_balancer::RiLoadBalancerStrategy>()?;
359        
360        // Add service mesh types to main module
361        m.add_class::<crate::service_mesh::RiServiceMesh>()?;
362        m.add_class::<crate::service_mesh::RiServiceMeshConfig>()?;
363        m.add_class::<crate::service_mesh::RiServiceDiscovery>()?;
364        m.add_class::<crate::service_mesh::RiServiceInstance>()?;
365        m.add_class::<crate::service_mesh::RiServiceStatus>()?;
366        m.add_class::<crate::service_mesh::RiServiceMeshStats>()?;
367        m.add_class::<crate::service_mesh::RiServiceEndpoint>()?;
368        m.add_class::<crate::service_mesh::RiServiceHealthStatus>()?;
369        m.add_class::<crate::service_mesh::health_check::RiHealthChecker>()?;
370        m.add_class::<crate::service_mesh::health_check::RiHealthSummary>()?;
371        m.add_class::<crate::service_mesh::traffic_management::RiTrafficManager>()?;
372        m.add_class::<crate::service_mesh::RiTrafficRoute>()?;
373        m.add_class::<crate::service_mesh::RiMatchCriteria>()?;
374        m.add_class::<crate::service_mesh::RiRouteAction>()?;
375        m.add_class::<crate::service_mesh::RiWeightedDestination>()?;
376        
377        // Add auth types to main module
378        m.add_class::<crate::auth::RiAuthModule>()?;
379        m.add_class::<crate::auth::RiAuthConfig>()?;
380        m.add_class::<crate::auth::RiJWTManager>()?;
381        m.add_class::<crate::auth::RiJWTClaims>()?;
382        m.add_class::<crate::auth::RiJWTValidationOptions>()?;
383        m.add_class::<crate::auth::RiSessionManager>()?;
384        m.add_class::<crate::auth::RiSession>()?;
385        m.add_class::<crate::auth::RiPermissionManager>()?;
386        m.add_class::<crate::auth::RiOAuthManager>()?;
387        m.add_class::<crate::auth::RiOAuthToken>()?;
388        m.add_class::<crate::auth::RiOAuthUserInfo>()?;
389        m.add_class::<crate::auth::RiOAuthProvider>()?;
390        m.add_class::<crate::auth::RiPermission>()?;
391        m.add_class::<crate::auth::RiRole>()?;
392        m.add_class::<crate::auth::RiJWTRevocationList>()?;
393        m.add_class::<crate::auth::RiRevokedTokenInfo>()?;
394        m.add_class::<crate::auth::RiSecurityManager>()?;
395        
396        // Add observability types to main module
397        m.add_class::<crate::observability::RiObservabilityModule>()?;
398        m.add_class::<crate::observability::RiObservabilityConfig>()?;
399        m.add_class::<crate::observability::RiMetricsRegistry>()?;
400        m.add_class::<crate::observability::RiTracer>()?;
401        m.add_class::<crate::observability::RiMetricType>()?;
402        m.add_class::<crate::observability::RiMetricConfig>()?;
403        m.add_class::<crate::observability::RiMetricSample>()?;
404        m.add_class::<crate::observability::RiMetric>()?;
405        m.add_class::<crate::observability::RiObservabilityData>()?;
406        
407        // Add system metrics collector types (requires system_info feature)
408        #[cfg(feature = "system_info")]
409        {
410            m.add_class::<crate::observability::RiSystemMetricsCollector>()?;
411            m.add_class::<crate::observability::RiSystemMetrics>()?;
412            m.add_class::<crate::observability::RiCPUMetrics>()?;
413            m.add_class::<crate::observability::RiMemoryMetrics>()?;
414            m.add_class::<crate::observability::RiDiskMetrics>()?;
415            m.add_class::<crate::observability::RiNetworkMetrics>()?;
416        }
417        
418        // Add validation types to main module
419        m.add_class::<crate::validation::RiValidationError>()?;
420        m.add_class::<crate::validation::RiValidationResult>()?;
421        m.add_class::<crate::validation::RiValidationSeverity>()?;
422        m.add_class::<crate::validation::RiValidatorBuilder>()?;
423        m.add_class::<crate::validation::RiValidationRunner>()?;
424        m.add_class::<crate::validation::RiSanitizer>()?;
425        m.add_class::<crate::validation::RiSanitizationConfig>()?;
426        m.add_class::<crate::validation::RiSchemaValidator>()?;
427        m.add_class::<crate::validation::RiValidationModule>()?;
428        
429        // Add protocol types to main module
430        #[cfg(feature = "protocol")]
431        {
432            m.add_class::<crate::protocol::RiProtocolManager>()?;
433            m.add_class::<crate::protocol::RiProtocolType>()?;
434            m.add_class::<crate::protocol::RiProtocolConfig>()?;
435            m.add_class::<crate::protocol::RiProtocolStatus>()?;
436            m.add_class::<crate::protocol::RiProtocolStats>()?;
437            m.add_class::<crate::protocol::RiConnectionState>()?;
438            m.add_class::<crate::protocol::RiConnectionStats>()?;
439            m.add_class::<crate::protocol::RiProtocolHealth>()?;
440            m.add_class::<crate::protocol::RiFrame>()?;
441            m.add_class::<crate::protocol::RiFrameHeader>()?;
442            m.add_class::<crate::protocol::RiFrameType>()?;
443            m.add_class::<crate::protocol::RiConnectionInfo>()?;
444            m.add_class::<crate::protocol::RiMessageFlags>()?;
445            m.add_class::<crate::protocol::RiSecurityLevel>()?;
446            m.add_class::<crate::protocol::frames::RiFrameParser>()?;
447            m.add_class::<crate::protocol::frames::RiFrameBuilder>()?;
448        }
449
450        // Add database types to main module
451        m.add_class::<crate::database::RiDatabaseConfig>()?;
452        m.add_class::<crate::database::RiDatabasePool>()?;
453        m.add_class::<crate::database::RiDBRow>()?;
454        m.add_class::<crate::database::RiDBResult>()?;
455        m.add_class::<crate::database::orm::RiPyORMRepository>()?;
456        m.add_class::<crate::database::DynamicPoolConfig>()?;
457        m.add_class::<crate::database::DatabaseMetrics>()?;
458
459        // Add grpc types to main module
460        #[cfg(all(feature = "grpc", feature = "pyo3"))]
461        {
462            m.add_class::<crate::grpc::RiGrpcConfig>()?;
463            m.add_class::<crate::grpc::RiGrpcStats>()?;
464            m.add_class::<crate::grpc::RiGrpcServiceRegistryPy>()?;
465            m.add_class::<crate::grpc::RiGrpcServerPy>()?;
466            m.add_class::<crate::grpc::RiGrpcClientPy>()?;
467        }
468
469        // Add websocket types to main module
470        #[cfg(all(feature = "websocket", feature = "pyo3"))]
471        {
472            m.add_class::<crate::ws::RiWSServerConfig>()?;
473            m.add_class::<crate::ws::RiWSEvent>()?;
474            m.add_class::<crate::ws::RiWSSessionInfo>()?;
475            m.add_class::<crate::ws::RiWSServerStats>()?;
476            m.add_class::<crate::ws::RiWSPythonHandler>()?;
477            m.add_class::<crate::ws::RiWSSessionManagerPy>()?;
478            m.add_class::<crate::ws::RiWSServerPy>()?;
479            m.add_class::<crate::ws::RiWSClientConfig>()?;
480            m.add_class::<crate::ws::RiWSClientStats>()?;
481            m.add_class::<crate::ws::RiWSClientPy>()?;
482        }
483
484        // Add module_rpc types to main module
485        m.add_class::<crate::module_rpc::RiModuleRPC>()?;
486        m.add_class::<crate::module_rpc::RiModuleClient>()?;
487        m.add_class::<crate::module_rpc::RiModuleEndpoint>()?;
488        m.add_class::<crate::module_rpc::RiMethodCall>()?;
489        m.add_class::<crate::module_rpc::RiMethodResponse>()?;
490        
491        // Add device types to main module
492        m.add_class::<crate::device::RiDeviceControlModule>()?;
493        m.add_class::<crate::device::RiDevice>()?;
494        m.add_class::<crate::device::RiDeviceType>()?;
495        m.add_class::<crate::device::RiDeviceStatus>()?;
496        m.add_class::<crate::device::RiDeviceCapabilities>()?;
497        m.add_class::<crate::device::RiDeviceHealthMetrics>()?;
498        m.add_class::<crate::device::RiDeviceController>()?;
499        m.add_class::<crate::device::RiDeviceConfig>()?;
500        m.add_class::<crate::device::RiDeviceControlConfig>()?;
501        m.add_class::<crate::device::RiDeviceSchedulingConfig>()?;
502        m.add_class::<crate::device::RiNetworkDeviceInfo>()?;
503        m.add_class::<crate::device::RiDiscoveryResult>()?;
504        m.add_class::<crate::device::RiResourceRequest>()?;
505        m.add_class::<crate::device::RiResourceAllocation>()?;
506        m.add_class::<crate::device::RiRequestSlaClass>()?;
507        m.add_class::<crate::device::RiResourceWeights>()?;
508        m.add_class::<crate::device::RiAffinityRules>()?;
509        m.add_class::<crate::device::RiResourcePoolStatus>()?;
510        m.add_class::<crate::device::pool::RiResourcePool>()?;
511        m.add_class::<crate::device::pool::RiResourcePoolConfig>()?;
512        m.add_class::<crate::device::pool::RiResourcePoolStatistics>()?;
513        m.add_class::<crate::device::pool::RiResourcePoolManager>()?;
514        m.add_class::<crate::device::pool::RiConnectionPoolStatistics>()?;
515        m.add_class::<crate::device::scheduler::RiResourceScheduler>()?;
516        m.add_class::<crate::device::scheduler::RiDeviceScheduler>()?;
517        m.add_class::<crate::device::scheduler::RiSchedulingPolicy>()?;
518        m.add_class::<crate::device::scheduler::RiAllocationRecord>()?;
519        m.add_class::<crate::device::scheduler::RiAllocationRequest>()?;
520        m.add_class::<crate::device::scheduler::RiAllocationStatistics>()?;
521        m.add_class::<crate::device::scheduler::RiDeviceTypeStatistics>()?;
522        m.add_class::<crate::device::scheduler::RiSchedulingRecommendation>()?;
523        m.add_class::<crate::device::scheduler::RiSchedulingRecommendationType>()?;
524        m.add_class::<crate::device::RiDeviceDiscoveryEngine>()?;
525        
526        // Add database migration type
527        m.add_class::<crate::database::RiDatabaseMigration>()?;
528        
529        // Create and add submodules
530        create_device_module(m)?;
531        create_cache_module(m)?;
532        create_fs_module(m)?;
533        create_hooks_module(m)?;
534        create_observability_module(m)?;
535        create_queue_module(m)?;
536        create_gateway_module(m)?;
537        create_service_mesh_module(m)?;
538        create_auth_module(m)?;
539        create_database_module(m)?;
540        create_validation_module(m)?;
541        #[cfg(feature = "protocol")]
542        create_protocol_module(m)?;
543        create_grpc_module(m)?;
544        create_ws_module(m)?;
545
546        Ok(())
547    }
548
549    fn create_device_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
550        let m = PyModule::new(parent.py(), "device")?;
551        
552        m.add_class::<crate::device::RiDeviceControlModule>()?;
553        m.add_class::<crate::device::RiDevice>()?;
554        m.add_class::<crate::device::RiDeviceType>()?;
555        m.add_class::<crate::device::RiDeviceStatus>()?;
556        m.add_class::<crate::device::RiDeviceCapabilities>()?;
557        m.add_class::<crate::device::RiDeviceHealthMetrics>()?;
558        m.add_class::<crate::device::RiDeviceController>()?;
559        m.add_class::<crate::device::RiDeviceConfig>()?;
560        m.add_class::<crate::device::RiDeviceControlConfig>()?;
561        m.add_class::<crate::device::RiDeviceSchedulingConfig>()?;
562        m.add_class::<crate::device::RiNetworkDeviceInfo>()?;
563        m.add_class::<crate::device::RiDiscoveryResult>()?;
564        m.add_class::<crate::device::RiResourceRequest>()?;
565        m.add_class::<crate::device::RiResourceAllocation>()?;
566        m.add_class::<crate::device::RiRequestSlaClass>()?;
567        m.add_class::<crate::device::RiResourceWeights>()?;
568        m.add_class::<crate::device::RiAffinityRules>()?;
569        m.add_class::<crate::device::pool::RiResourcePool>()?;
570        m.add_class::<crate::device::pool::RiResourcePoolConfig>()?;
571        m.add_class::<crate::device::pool::RiResourcePoolStatistics>()?;
572        m.add_class::<crate::device::pool::RiResourcePoolManager>()?;
573        m.add_class::<crate::device::pool::RiConnectionPoolStatistics>()?;
574        m.add_class::<crate::device::scheduler::RiResourceScheduler>()?;
575        m.add_class::<crate::device::scheduler::RiDeviceScheduler>()?;
576        m.add_class::<crate::device::scheduler::RiSchedulingPolicy>()?;
577        m.add_class::<crate::device::scheduler::RiAllocationRecord>()?;
578        m.add_class::<crate::device::scheduler::RiAllocationRequest>()?;
579        m.add_class::<crate::device::scheduler::RiAllocationStatistics>()?;
580        m.add_class::<crate::device::scheduler::RiDeviceTypeStatistics>()?;
581        m.add_class::<crate::device::scheduler::RiSchedulingRecommendation>()?;
582        m.add_class::<crate::device::scheduler::RiSchedulingRecommendationType>()?;
583        m.add_class::<crate::device::RiDeviceDiscoveryEngine>()?;
584        
585        parent.add_submodule(&m)?;
586        Ok(())
587    }
588    
589    fn create_cache_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
590        let m = PyModule::new(parent.py(), "cache")?;
591        
592        // Add cache types to the cache module
593        m.add_class::<crate::cache::RiCacheModule>()?;
594        m.add_class::<crate::cache::RiCacheManager>()?;
595        m.add_class::<crate::cache::RiCacheConfig>()?;
596        m.add_class::<crate::cache::RiCacheBackendType>()?;
597        m.add_class::<crate::cache::RiCachePolicy>()?;
598        m.add_class::<crate::cache::RiCacheStats>()?;
599        m.add_class::<crate::cache::RiCachedValue>()?;
600        m.add_class::<crate::cache::RiCacheEvent>()?;
601        
602        parent.add_submodule(&m)?;
603        Ok(())
604    }
605    
606    fn create_fs_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
607        let m = PyModule::new(parent.py(), "fs")?;
608        m.add_class::<crate::fs::RiFileSystem>()?;
609        parent.add_submodule(&m)?;
610        Ok(())
611    }
612    
613    fn create_hooks_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
614        let m = PyModule::new(parent.py(), "hooks")?;
615        m.add_class::<crate::hooks::RiHookKind>()?;
616        m.add_class::<crate::hooks::RiModulePhase>()?;
617        m.add_class::<crate::hooks::RiHookEvent>()?;
618        m.add_class::<crate::hooks::RiHookBus>()?;
619        parent.add_submodule(&m)?;
620        Ok(())
621    }
622    
623    fn create_observability_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
624        let m = PyModule::new(parent.py(), "observability")?;
625        m.add_class::<crate::observability::RiObservabilityModule>()?;
626        m.add_class::<crate::observability::RiObservabilityConfig>()?;
627        m.add_class::<crate::observability::RiObservabilityData>()?;
628        m.add_class::<crate::observability::RiMetricsRegistry>()?;
629        m.add_class::<crate::observability::RiTracer>()?;
630        m.add_class::<crate::observability::RiMetricType>()?;
631        m.add_class::<crate::observability::RiMetricConfig>()?;
632        m.add_class::<crate::observability::RiMetricSample>()?;
633        m.add_class::<crate::observability::RiMetric>()?;
634        #[cfg(feature = "system_info")]
635        {
636            m.add_class::<crate::observability::RiSystemMetricsCollector>()?;
637            m.add_class::<crate::observability::RiSystemMetrics>()?;
638            m.add_class::<crate::observability::RiCPUMetrics>()?;
639            m.add_class::<crate::observability::RiMemoryMetrics>()?;
640            m.add_class::<crate::observability::RiDiskMetrics>()?;
641            m.add_class::<crate::observability::RiNetworkMetrics>()?;
642        }
643        parent.add_submodule(&m)?;
644        Ok(())
645    }
646    
647    fn create_queue_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
648        let m = PyModule::new(parent.py(), "queue")?;
649        m.add_class::<crate::queue::RiQueueModule>()?;
650        m.add_class::<crate::queue::RiQueueConfig>()?;
651        m.add_class::<crate::queue::RiQueueManager>()?;
652        m.add_class::<crate::queue::RiQueueMessage>()?;
653        m.add_class::<crate::queue::RiQueueStats>()?;
654        m.add_class::<crate::queue::RiQueueBackendType>()?;
655        m.add_class::<crate::queue::RiRetryPolicy>()?;
656        m.add_class::<crate::queue::RiDeadLetterConfig>()?;
657        parent.add_submodule(&m)?;
658        Ok(())
659    }
660    
661    fn create_gateway_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
662        let m = PyModule::new(parent.py(), "gateway")?;
663        m.add_class::<crate::gateway::RiGateway>()?;
664        m.add_class::<crate::gateway::RiGatewayConfig>()?;
665        m.add_class::<crate::gateway::RiRoute>()?;
666        m.add_class::<crate::gateway::RiRouter>()?;
667        m.add_class::<crate::gateway::rate_limiter::RiRateLimiter>()?;
668        m.add_class::<crate::gateway::rate_limiter::RiRateLimitConfig>()?;
669        m.add_class::<crate::gateway::rate_limiter::RiRateLimitStats>()?;
670        m.add_class::<crate::gateway::rate_limiter::RiSlidingWindowRateLimiter>()?;
671        m.add_class::<crate::gateway::circuit_breaker::RiCircuitBreaker>()?;
672        m.add_class::<crate::gateway::circuit_breaker::RiCircuitBreakerConfig>()?;
673        m.add_class::<crate::gateway::circuit_breaker::RiCircuitBreakerState>()?;
674        m.add_class::<crate::gateway::circuit_breaker::RiCircuitBreakerMetrics>()?;
675        m.add_class::<crate::gateway::load_balancer::RiBackendServer>()?;
676        m.add_class::<crate::gateway::load_balancer::RiLoadBalancerServerStats>()?;
677        m.add_class::<crate::gateway::load_balancer::RiLoadBalancer>()?;
678        m.add_class::<crate::gateway::load_balancer::RiLoadBalancerStrategy>()?;
679        parent.add_submodule(&m)?;
680        Ok(())
681    }
682    
683    fn create_service_mesh_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
684        let m = PyModule::new(parent.py(), "service_mesh")?;
685        m.add_class::<crate::service_mesh::RiServiceMesh>()?;
686        m.add_class::<crate::service_mesh::RiServiceMeshConfig>()?;
687        m.add_class::<crate::service_mesh::RiServiceDiscovery>()?;
688        m.add_class::<crate::service_mesh::RiServiceInstance>()?;
689        m.add_class::<crate::service_mesh::RiServiceStatus>()?;
690        m.add_class::<crate::service_mesh::RiServiceMeshStats>()?;
691        m.add_class::<crate::service_mesh::RiServiceEndpoint>()?;
692        m.add_class::<crate::service_mesh::RiServiceHealthStatus>()?;
693        m.add_class::<crate::service_mesh::health_check::RiHealthChecker>()?;
694        m.add_class::<crate::service_mesh::health_check::RiHealthSummary>()?;
695        m.add_class::<crate::service_mesh::health_check::RiHealthCheckType>()?;
696        m.add_class::<crate::service_mesh::traffic_management::RiTrafficManager>()?;
697        m.add_class::<crate::service_mesh::traffic_management::RiTrafficRoute>()?;
698        m.add_class::<crate::service_mesh::traffic_management::RiMatchCriteria>()?;
699        m.add_class::<crate::service_mesh::traffic_management::RiRouteAction>()?;
700        m.add_class::<crate::service_mesh::traffic_management::RiWeightedDestination>()?;
701        parent.add_submodule(&m)?;
702        Ok(())
703    }
704    
705    fn create_auth_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
706        let m = PyModule::new(parent.py(), "auth")?;
707        m.add_class::<crate::auth::RiAuthModule>()?;
708        m.add_class::<crate::auth::RiAuthConfig>()?;
709        m.add_class::<crate::auth::RiJWTManager>()?;
710        m.add_class::<crate::auth::RiJWTClaims>()?;
711        m.add_class::<crate::auth::RiJWTValidationOptions>()?;
712        m.add_class::<crate::auth::RiSessionManager>()?;
713        m.add_class::<crate::auth::RiSession>()?;
714        m.add_class::<crate::auth::RiPermissionManager>()?;
715        m.add_class::<crate::auth::RiPermission>()?;
716        m.add_class::<crate::auth::RiRole>()?;
717        m.add_class::<crate::auth::RiOAuthManager>()?;
718        m.add_class::<crate::auth::RiOAuthToken>()?;
719        m.add_class::<crate::auth::RiOAuthUserInfo>()?;
720        m.add_class::<crate::auth::RiOAuthProvider>()?;
721        m.add_class::<crate::auth::RiJWTRevocationList>()?;
722        m.add_class::<crate::auth::RiRevokedTokenInfo>()?;
723        m.add_class::<crate::auth::RiSecurityManager>()?;
724        parent.add_submodule(&m)?;
725        Ok(())
726    }
727    
728    fn create_database_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
729        let m = PyModule::new(parent.py(), "database")?;
730        m.add_class::<crate::database::RiDatabaseConfig>()?;
731        m.add_class::<crate::database::RiDatabasePool>()?;
732        m.add_class::<crate::database::RiDBRow>()?;
733        m.add_class::<crate::database::RiDBResult>()?;
734        m.add_class::<crate::database::DynamicPoolConfig>()?;
735        m.add_class::<crate::database::DatabaseMetrics>()?;
736        m.add_class::<crate::database::orm::ColumnDefinition>()?;
737        m.add_class::<crate::database::orm::IndexDefinition>()?;
738        m.add_class::<crate::database::orm::ForeignKeyDefinition>()?;
739        m.add_class::<crate::database::orm::TableDefinition>()?;
740        m.add_class::<crate::database::orm::ComparisonOperator>()?;
741        m.add_class::<crate::database::orm::LogicalOperator>()?;
742        m.add_class::<crate::database::orm::Criteria>()?;
743        m.add_class::<crate::database::orm::JoinClause>()?;
744        m.add_class::<crate::database::orm::SortOrder>()?;
745        m.add_class::<crate::database::orm::Pagination>()?;
746        m.add_class::<crate::database::orm::QueryBuilder>()?;
747        m.add_class::<crate::database::orm::JoinType>()?;
748        m.add_class::<crate::database::orm::RiPyORMRepository>()?;
749        parent.add_submodule(&m)?;
750        Ok(())
751    }
752    
753    fn create_validation_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
754        let m = PyModule::new(parent.py(), "validation")?;
755        m.add_class::<crate::validation::RiValidationError>()?;
756        m.add_class::<crate::validation::RiValidationResult>()?;
757        m.add_class::<crate::validation::RiValidationSeverity>()?;
758        m.add_class::<crate::validation::RiValidatorBuilder>()?;
759        m.add_class::<crate::validation::RiValidationRunner>()?;
760        m.add_class::<crate::validation::RiSanitizer>()?;
761        m.add_class::<crate::validation::RiSanitizationConfig>()?;
762        m.add_class::<crate::validation::RiSchemaValidator>()?;
763        m.add_class::<crate::validation::RiValidationModule>()?;
764        parent.add_submodule(&m)?;
765        Ok(())
766    }
767    
768    #[cfg(feature = "protocol")]
769    fn create_protocol_module(_parent: &Bound<'_, PyModule>) -> PyResult<()> {
770        let m = PyModule::new(_parent.py(), "protocol")?;
771        m.add_class::<crate::protocol::RiProtocolManager>()?;
772        m.add_class::<crate::protocol::RiProtocolType>()?;
773        m.add_class::<crate::protocol::RiProtocolConfig>()?;
774        m.add_class::<crate::protocol::RiProtocolStatus>()?;
775        m.add_class::<crate::protocol::RiProtocolStats>()?;
776        m.add_class::<crate::protocol::RiConnectionState>()?;
777        m.add_class::<crate::protocol::RiConnectionStats>()?;
778        m.add_class::<crate::protocol::RiProtocolHealth>()?;
779        m.add_class::<crate::protocol::RiFrame>()?;
780        m.add_class::<crate::protocol::RiFrameHeader>()?;
781        m.add_class::<crate::protocol::RiFrameType>()?;
782        m.add_class::<crate::protocol::RiConnectionInfo>()?;
783        m.add_class::<crate::protocol::RiMessageFlags>()?;
784        m.add_class::<crate::protocol::RiSecurityLevel>()?;
785        m.add_class::<crate::protocol::frames::RiFrameParser>()?;
786        m.add_class::<crate::protocol::frames::RiFrameBuilder>()?;
787        _parent.add_submodule(&m)?;
788        Ok(())
789    }
790    
791    fn create_grpc_module(_parent: &Bound<'_, PyModule>) -> PyResult<()> {
792        #[cfg(all(feature = "grpc", feature = "pyo3"))]
793        {
794            let m = PyModule::new(_parent.py(), "grpc")?;
795            m.add_class::<crate::grpc::RiGrpcConfig>()?;
796            m.add_class::<crate::grpc::RiGrpcStats>()?;
797            m.add_class::<crate::grpc::RiGrpcServiceRegistryPy>()?;
798            m.add_class::<crate::grpc::RiGrpcServerPy>()?;
799            m.add_class::<crate::grpc::RiGrpcClientPy>()?;
800            _parent.add_submodule(&m)?;
801        }
802        #[cfg(not(all(feature = "grpc", feature = "pyo3")))]
803        {
804            let _ = _parent;
805        }
806        Ok(())
807    }
808    
809    fn create_ws_module(_parent: &Bound<'_, PyModule>) -> PyResult<()> {
810        #[cfg(all(feature = "websocket", feature = "pyo3"))]
811        {
812            let m = PyModule::new(_parent.py(), "ws")?;
813            m.add_class::<crate::ws::RiWSServerConfig>()?;
814            m.add_class::<crate::ws::RiWSEvent>()?;
815            m.add_class::<crate::ws::RiWSSessionInfo>()?;
816            m.add_class::<crate::ws::RiWSServerStats>()?;
817            m.add_class::<crate::ws::RiWSPythonHandler>()?;
818            m.add_class::<crate::ws::RiWSSessionManagerPy>()?;
819            m.add_class::<crate::ws::RiWSServerPy>()?;
820            m.add_class::<crate::ws::RiWSClientConfig>()?;
821            m.add_class::<crate::ws::RiWSClientStats>()?;
822            m.add_class::<crate::ws::RiWSClientPy>()?;
823            _parent.add_submodule(&m)?;
824        }
825        #[cfg(not(all(feature = "websocket", feature = "pyo3")))]
826        {
827            let _ = _parent;
828        }
829        Ok(())
830    }
831}