Skip to main content

ferrum_engine/
modality_stubs.rs

1//! Shared boilerplate for modality-only engines (embedding / transcription / TTS).
2//!
3//! These engines wrap a per-modality executor and expose its functionality
4//! through the `InferenceEngine` trait. They do NOT do text generation,
5//! so `infer / infer_stream` return Err and the orchestration accessors
6//! (status / metrics / health / shutdown) return inert defaults.
7//!
8//! Each modality engine called these with copy-pasted bodies (~80 lines
9//! of identical boilerplate per engine). This module hosts the canonical
10//! versions so the 3 fake engines can shrink.
11
12use ferrum_types::{EngineMetrics, EngineStatus, HealthStatus, MemoryUsage};
13
14/// Inert engine status — modality engines aren't request-driven, so most
15/// fields are zeroed. `is_ready: true` because the executor is loaded.
16pub fn inert_status() -> EngineStatus {
17    EngineStatus {
18        is_ready: true,
19        loaded_models: vec![],
20        active_requests: 0,
21        queued_requests: 0,
22        memory_usage: MemoryUsage {
23            total_bytes: 0,
24            used_bytes: 0,
25            free_bytes: 0,
26            gpu_memory_bytes: None,
27            cpu_memory_bytes: None,
28            cache_memory_bytes: 0,
29            utilization_percent: 0.0,
30        },
31        uptime_seconds: 0,
32        last_heartbeat: chrono::Utc::now(),
33        version: env!("CARGO_PKG_VERSION").to_string(),
34    }
35}
36
37/// Inert engine metrics — all zeros, defaults on nested types.
38pub fn inert_metrics() -> EngineMetrics {
39    EngineMetrics {
40        total_requests: 0,
41        successful_requests: 0,
42        failed_requests: 0,
43        avg_request_latency_ms: 0.0,
44        p95_request_latency_ms: 0.0,
45        p99_request_latency_ms: 0.0,
46        throughput_rps: 0.0,
47        tokens_per_second: 0.0,
48        queue_metrics: Default::default(),
49        resource_utilization: Default::default(),
50        error_stats: Default::default(),
51        performance_breakdown: Default::default(),
52    }
53}
54
55/// Health: always healthy if executor loaded.
56pub fn inert_health() -> HealthStatus {
57    HealthStatus::healthy()
58}