pub struct SpectraRouter { /* private fields */ }Expand description
Resolves event tables and metric names to storage backends.
A runtime installs default metrics and events backends, then registers schema-specific
routes. Queries use a named route when present and otherwise fall back to the corresponding
default backend. Most applications access this through Spectra::router().
§Examples
use chrono::{Duration, Utc};
use spectra_core::{MetricsQueryRange, SpectraRouter};
let router = SpectraRouter::new();
let now = Utc::now();
let points = router.query_metrics(MetricsQueryRange {
metric_name: "cache_hits".into(),
start: now - Duration::minutes(5),
end: now,
label_matchers: vec![],
}).await?;
// A new router uses no-op defaults, so no rows are returned.
assert!(points.is_empty());Implementations§
Source§impl SpectraRouter
impl SpectraRouter
Sourcepub fn new() -> SpectraRouter
pub fn new() -> SpectraRouter
Creates a router with no-op default backends.
Sourcepub fn with_defaults(
default_metrics: Arc<dyn MetricsStorageBackend>,
default_events: Arc<dyn EventStorageBackend>,
) -> SpectraRouter
pub fn with_defaults( default_metrics: Arc<dyn MetricsStorageBackend>, default_events: Arc<dyn EventStorageBackend>, ) -> SpectraRouter
Create a router with default backends for unregistered schema names.
Sourcepub fn register_event_backend(
&self,
table: impl Into<String>,
backend: Arc<dyn EventStorageBackend>,
)
pub fn register_event_backend( &self, table: impl Into<String>, backend: Arc<dyn EventStorageBackend>, )
Registers a storage backend for an event table.
Sourcepub fn register_metrics_backend(
&self,
name: impl Into<String>,
backend: Arc<dyn MetricsStorageBackend>,
)
pub fn register_metrics_backend( &self, name: impl Into<String>, backend: Arc<dyn MetricsStorageBackend>, )
Registers a storage backend for a metric family.
Sourcepub fn resolve_event(&self, table: &str) -> Arc<dyn EventStorageBackend>
pub fn resolve_event(&self, table: &str) -> Arc<dyn EventStorageBackend>
Resolves the backend for an event table, falling back to the default.
Sourcepub fn resolve_metrics(&self, name: &str) -> Arc<dyn MetricsStorageBackend>
pub fn resolve_metrics(&self, name: &str) -> Arc<dyn MetricsStorageBackend>
Resolves the backend for a metric family, falling back to the default.
Sourcepub async fn query_events(
&self,
filter: EventsQueryFilter,
) -> Result<Vec<EventRow>, Error>
pub async fn query_events( &self, filter: EventsQueryFilter, ) -> Result<Vec<EventRow>, Error>
Queries event rows through the resolved backend.
Sourcepub async fn query_metrics(
&self,
query: MetricsQueryRange,
) -> Result<Vec<MetricPoint>, Error>
pub async fn query_metrics( &self, query: MetricsQueryRange, ) -> Result<Vec<MetricPoint>, Error>
Queries metric points through the resolved backend.
Sourcepub async fn query_event_aggregate(
&self,
filter: EventsAggregateFilter,
) -> Result<EventAggregateResult, Error>
pub async fn query_event_aggregate( &self, filter: EventsAggregateFilter, ) -> Result<EventAggregateResult, Error>
Queries aggregated chart data through the resolved backend.
Sourcepub fn set_global(router: Arc<SpectraRouter>)
pub fn set_global(router: Arc<SpectraRouter>)
Installs a router as the process-global instance (call once).
Sourcepub fn global() -> Arc<SpectraRouter>
pub fn global() -> Arc<SpectraRouter>
Returns the process-global router (panics if not installed).
Sourcepub fn try_global() -> Option<Arc<SpectraRouter>>
pub fn try_global() -> Option<Arc<SpectraRouter>>
Returns the process-global router if installed.