Expand description
Main Tauri IPC server orchestrator.
§TauriIPCServer - Mountain-Wind IPC Bridge
File Responsibilities: This module serves as the core IPC (Inter-Process Communication) server for Mountain, establishing and managing the bidirectional communication bridge between Mountain’s Rust backend and Wind’s TypeScript frontend. It implements the Mountain counterpart to Wind’s TauriIPCServer.ts, ensuring seamless integration across the language boundary.
Architectural Role in Wind-Mountain Connection: The TauriIPCServer acts as the central message router and communication orchestrator:
-
Connection Management:
- Establishes secure connections between Wind and Mountain
- Maintains connection health and auto-reconnects on failure
- Manages connection pooling for optimal resource usage
- Tracks connection state for monitoring and debugging
-
Message Routing:
- Routes incoming messages from Wind to appropriate handlers
- Broadcasts messages from Mountain to Wind subscribers
- Implements message filtering and prioritization
- Supports point-to-point and publish-subscribe patterns
-
Security Layer:
- Validates all incoming messages for security
- Implements permission-based access control (RBAC)
- Provides AES-256-GCM encryption for sensitive data
- Logs all security events for audit trails
-
Reliability Features:
- Message queuing for offline scenarios
- Automatic retry with exponential backoff
- Graceful degradation when services unavailable
- Circuit breaker pattern for cascading failure prevention
Communication Patterns:
1. Request-Response Pattern:
// Wind sends request
let result = app_handle.invoke_handler("command", args).await?;
// Mountain processes and responds
let response = handle_request().await;
ipc.emit(response_channel, response).await;2. Event Emission Pattern:
// Mountain emits events to Wind subscribers
app.emit("configuration-updated", new_config).await;
app.emit("file-changed", file_event).await;3. Broadcast Pattern:
// Broadcast to all subscribers on a channel
for listener in listeners.get(channel) {
listener(message.clone()).await;
}Message Flow:
Wind Frontend
|
| 4. Response
v
Tauri Bridge (JS Bridge)
|
| 1. IPC Invoke
v
TauriIPCServer (Rust)
|
| 2. Route & Validate
v
WindServiceHandlers
|
| 3. Execute
v
Mountain ServicesKey Structures:
- TauriIPCMessage: Standard message format for all IPC communication
- ConnectionStatus: Tracks connection health and uptime
- ConnectionPool: Manages concurrent IPC connections efficiently
- PermissionManager: Implements role-based access control
- SecureMessageChannel: Provides encryption for sensitive data
- MessageCompressor: Gzip compression for large payloads
Defensive Coding Practices:
-
Input Validation:
- All messages validated before processing
- Type checking for all serialized data
- Schema validation for complex payloads
-
Error Handling:
- Comprehensive error messages with context
- Error logging at appropriate levels
- Graceful handling of transient failures
- Automatic retry with backoff
-
Timeout Management:
- Configurable timeouts for all operations
- Timeout-based circuit breaking
- Graceful degradation on timeout
-
Resource Management:
- Connection pooling to prevent exhaustion
- Automatic cleanup of stale resources
- Memory-efficient message queuing
Security Architecture:
- Authentication: User identity verification
- Authorization: Permission-based access control (RBAC)
- Encryption: AES-256-GCM for sensitive data
- Auditing: Complete security event logging
- Threat Detection: Anomaly monitoring and alerts
Performance Optimizations:
- Message Compression: Gzip for large payloads
- Connection Pooling: Reuse connections efficiently
- Caching: Cache frequently used data
- Batching: Batch multiple messages for efficiency
- Async/Await: Non-blocking I/O operations
Monitoring & Observability:
- Connection Status: Real-time health monitoring
- Performance Metrics: Latency, throughput, error rates
- Audit Logs: Complete message and security event logging
- Health Checks: Periodic health assessments
VSCode RPC Patterns (Study Reference): This implementation draws inspiration from VSCode’s RPC/IPC architecture:
- Channel-based message routing
- Request-response correlation
- Cancellation token support
- Binary protocol message serialization
- Protocol versioning for compatibility
Structs§
- Connection
Handle - Handle representing an active connection
- Connection
Health 🔒Checker - Connection health checker
- Connection
Pool - Connection pool for IPC operations - manages concurrent connections efficiently
- Connection
Stats - Connection statistics
- Connection
Status - Connection status message
- Encrypted
Message - Encrypted message structure
- Message
Compressor - Message compression utility for optimizing IPC message transfer
- Permission
- Permission definition
- Permission
Manager - Permission manager for IPC operations
- Role
- Role definition for RBAC
- Secure
Message Channel - Secure message channel with encryption and authentication
- Security
Context - Security context for permission validation
- Security
Event - Security event for auditing
- TauriIPC
Message - IPC message structure matching Wind’s ITauriIPCMessage interface
- TauriIPC
Server - Mountain’s IPC Server counterpart to Wind’s TauriIPCServer
Enums§
Functions§
- mountain_
ipc_ get_ status - Tauri command handler for Wind to check connection status
- mountain_
ipc_ receive_ message - Advanced permission-based IPC message handler
Type Aliases§
- Listener
Callback 🔒 - Listener callback type