wavecraft_dev_server/audio/
status.rs1use std::time::{SystemTime, UNIX_EPOCH};
7use wavecraft_protocol::{
8 AudioDiagnostic, AudioDiagnosticCode, AudioRuntimePhase, AudioRuntimeStatus,
9};
10
11pub fn status(
13 phase: AudioRuntimePhase,
14 sample_rate: Option<f32>,
15 buffer_size: Option<u32>,
16) -> AudioRuntimeStatus {
17 AudioRuntimeStatus {
18 phase,
19 diagnostic: None,
20 sample_rate,
21 buffer_size,
22 updated_at_ms: now_millis(),
23 }
24}
25
26pub fn status_with_diagnostic(
28 phase: AudioRuntimePhase,
29 code: AudioDiagnosticCode,
30 message: impl Into<String>,
31 hint: Option<&str>,
32 sample_rate: Option<f32>,
33 buffer_size: Option<u32>,
34) -> AudioRuntimeStatus {
35 AudioRuntimeStatus {
36 phase,
37 diagnostic: Some(AudioDiagnostic {
38 code,
39 message: message.into(),
40 hint: hint.map(ToOwned::to_owned),
41 }),
42 sample_rate,
43 buffer_size,
44 updated_at_ms: now_millis(),
45 }
46}
47
48fn now_millis() -> u64 {
49 SystemTime::now()
50 .duration_since(UNIX_EPOCH)
51 .map_or(0, |duration| duration.as_millis() as u64)
52}