Skip to main content

sim_lib_stream_host/
eval_site.rs

1//! Shared stream evaluation-site traits for cataloged host devices.
2
3use sim_kernel::{Result, Symbol};
4
5use crate::placement::{DeviceRecord, Placement};
6
7/// Open stream site returned by a device catalog.
8pub trait StreamEvalSite: Send {
9    /// Returns the placement tier used by this site.
10    fn placement(&self) -> &Placement;
11
12    /// Returns the catalog row that opened this site.
13    fn device_record(&self) -> &DeviceRecord;
14
15    /// Closes the site.
16    fn close(self: Box<Self>) -> Result<()>;
17}
18
19/// Provider of cataloged stream devices.
20pub trait DeviceProvider: Send + Sync {
21    /// Enumerates devices owned by this provider.
22    fn enumerate(&self) -> Result<Vec<DeviceRecord>>;
23
24    /// Opens one provider-owned device by catalog id.
25    fn open(&self, id: &Symbol) -> Result<Box<dyn StreamEvalSite>>;
26}