pub struct RoutingPlan { /* private fields */ }Expand description
A resolved routing plan: the deduplicated pipeline-sets to build one engine each, plus the schema-to-set mapping and the unknown-handling policy.
Pure data: it decides which pipeline-set an event routes to, leaving the engine construction and dispatch to the caller. The default set (index 0) is always present, so there is always a fallback target.
Implementations§
Source§impl RoutingPlan
impl RoutingPlan
Sourcepub fn from_config(config: &RoutingConfig) -> Self
pub fn from_config(config: &RoutingConfig) -> Self
Build a plan from a routing config, deduplicating identical pipeline-sets so the caller compiles each distinct set once.
Sourcepub fn pipeline_sets(&self) -> &[Vec<String>]
pub fn pipeline_sets(&self) -> &[Vec<String>]
The deduplicated pipeline-sets, in index order (set 0 is the default). The caller builds one engine per entry.
Sourcepub fn on_unknown(&self) -> OnUnknown
pub fn on_unknown(&self) -> OnUnknown
The configured unknown-handling policy.
Sourcepub fn schema_logsource(&self, schema: &str) -> Option<&LogSource>
pub fn schema_logsource(&self, schema: &str) -> Option<&LogSource>
The logsource a recognized schema implies, if any (built-in default or binding override). Used by the router to fill gaps in an event’s logsource before conflict-based pruning.
Sourcepub fn schemas_with_logsource(&self) -> Vec<String>
pub fn schemas_with_logsource(&self) -> Vec<String>
The recognized schema names that carry an implied logsource (built-in defaults plus binding overrides), sorted for deterministic output.
Sourcepub fn set_product_partition(&self) -> Vec<Option<HashSet<String>>>
pub fn set_product_partition(&self) -> Vec<Option<HashSet<String>>>
For each pipeline-set index, the set of lowercased products whose rules
are safe to keep when partitioning per-schema engines, or None to keep
the full ruleset.
A set is partitionable only when every schema that can route to it
(direct bindings plus aliases) implies a product; if any routing schema
is product-less (cross-platform), the set keeps all rules. The default
set (index 0) is never partitioned, because unbound and unknown events
route there and could be any product. Callers still apply their own
pipeline-safety check (a product-setting change_logsource disables
partitioning for that set).
Sourcepub fn decide(&self, schema: Option<&str>) -> RouteDecision
pub fn decide(&self, schema: Option<&str>) -> RouteDecision
Decide how to route an event given its classified schema (or None
when nothing matched).
Trait Implementations§
Source§impl Clone for RoutingPlan
impl Clone for RoutingPlan
Source§fn clone(&self) -> RoutingPlan
fn clone(&self) -> RoutingPlan
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more