metrale_model_engine/traits/model/
streams.rs

1// SPDX-License-Identifier: MIT OR Apache-2.0
2
3//! 2026-09-26: `ModelStreams`, one of the supertraits `Model` is made of. Its methods, default
4//! bodies and docs are the ones `Model` declared before the split.
5//!
6//! Owner: model-engine.
7//! Invariants: none beyond the types.
8
9use anyhow::Result;
10
11/// 2026-09-26: Streams, events and host synchronisation.
12pub trait ModelStreams {
13    /// 2026-09-25: The default stream. Default `0`.
14    fn default_stream(&self) -> u64 {
15        0
16    }
17
18    /// 2026-09-25: A new stream. Default `Ok(0)`.
19    fn create_stream(&self) -> Result<u64> {
20        Ok(0)
21    }
22
23    /// 2026-09-25: A new event. Default `Ok(0)`.
24    fn create_event(&self) -> Result<u64> {
25        Ok(0)
26    }
27
28    /// 2026-09-25: Record `event` on `stream`. Default: `Ok(())`.
29    fn record_event(&self, _event: u64, _stream: u64) -> Result<()> {
30        Ok(())
31    }
32
33    /// 2026-09-25: Make `stream` wait for `event` on the device; the host does not block.
34    /// Default: `Ok(())`.
35    fn stream_wait_event(&self, _stream: u64, _event: u64) -> Result<()> {
36        Ok(())
37    }
38
39    /// 2026-09-25: Block the host until `stream`'s work has completed. Default: `Ok(())`.
40    fn synchronize(&self, _stream: u64) -> Result<()> {
41        Ok(())
42    }
43}