ih_muse_core/
transport.rs1use std::net::SocketAddr;
4
5use async_trait::async_trait;
6
7pub use crate::errors::MuseResult;
8pub use ih_muse_proto::{
9 types::*, ElementKindRegistration, ElementRegistration, MetricDefinition, MetricPayload,
10 MetricQuery, NodeElementRange, NodeState, TimestampResolution,
11};
12
13#[async_trait]
14pub trait Transport {
15 async fn health_check(&self) -> MuseResult<()>;
16 async fn get_node_state(&self) -> MuseResult<NodeState>;
17 async fn get_finest_resolution(&self) -> MuseResult<TimestampResolution>;
18 async fn register_element_kinds(
19 &self,
20 element_kinds: &[ElementKindRegistration],
21 ) -> MuseResult<()>;
22 async fn register_elements(
23 &self,
24 elements: &[ElementRegistration],
25 ) -> MuseResult<Vec<MuseResult<ElementId>>>;
26 async fn get_node_elem_ranges(
27 &self,
28 ini: Option<u64>,
29 end: Option<u64>,
30 ) -> MuseResult<Vec<NodeElementRange>>;
31 async fn register_metrics(&self, payload: &[MetricDefinition]) -> MuseResult<()>;
32 async fn get_metric_order(&self) -> MuseResult<Vec<MetricDefinition>>;
33 async fn get_metrics(
34 &self,
35 query: &MetricQuery,
36 node_addr: Option<SocketAddr>,
37 ) -> MuseResult<Vec<MetricPayload>>;
38 async fn send_metrics(
39 &self,
40 payload: Vec<MetricPayload>,
41 node_addr: Option<SocketAddr>,
42 ) -> MuseResult<()>;
43}