pub struct AlignmentGroupCoordinator { /* private fields */ }Expand description
Manages multiple alignment groups.
Provides a single coordination point for all alignment groups in the system. Routes watermark updates to the appropriate group based on source assignment.
§Example
use laminar_core::time::{
AlignmentGroupCoordinator, AlignmentGroupConfig, AlignmentGroupId,
EnforcementMode, AlignmentAction,
};
use std::time::Duration;
let mut coordinator = AlignmentGroupCoordinator::new();
// Create a group for orders-payments join
let config = AlignmentGroupConfig::new("orders-payments")
.with_max_drift(Duration::from_secs(300));
coordinator.add_group(config);
// Assign sources to the group
coordinator.assign_source_to_group(0, &AlignmentGroupId::new("orders-payments")).unwrap();
coordinator.assign_source_to_group(1, &AlignmentGroupId::new("orders-payments")).unwrap();
// Report watermarks
let action = coordinator.report_watermark(0, 10_000);
assert_eq!(action, Some(AlignmentAction::Continue));Implementations§
Source§impl AlignmentGroupCoordinator
impl AlignmentGroupCoordinator
Sourcepub fn add_group(&mut self, config: AlignmentGroupConfig)
pub fn add_group(&mut self, config: AlignmentGroupConfig)
Adds an alignment group.
Sourcepub fn remove_group(
&mut self,
group_id: &AlignmentGroupId,
) -> Option<WatermarkAlignmentGroup>
pub fn remove_group( &mut self, group_id: &AlignmentGroupId, ) -> Option<WatermarkAlignmentGroup>
Removes an alignment group.
Sourcepub fn assign_source_to_group(
&mut self,
source_id: usize,
group_id: &AlignmentGroupId,
) -> Result<(), AlignmentError>
pub fn assign_source_to_group( &mut self, source_id: usize, group_id: &AlignmentGroupId, ) -> Result<(), AlignmentError>
Assigns a source to a group.
§Errors
Returns an error if the group doesn’t exist or the source is already assigned to another group.
Sourcepub fn unassign_source(&mut self, source_id: usize)
pub fn unassign_source(&mut self, source_id: usize)
Removes a source from its group.
Sourcepub fn report_watermark(
&mut self,
source_id: usize,
watermark: i64,
) -> Option<AlignmentAction>
pub fn report_watermark( &mut self, source_id: usize, watermark: i64, ) -> Option<AlignmentAction>
Reports a watermark update.
Returns the action for the source, or None if source not in any group.
Sourcepub fn check_all_alignments(&mut self) -> Vec<(usize, AlignmentAction)>
pub fn check_all_alignments(&mut self) -> Vec<(usize, AlignmentAction)>
Checks alignment for all groups.
Returns all resume/pause actions across all groups.
Sourcepub fn all_metrics(&self) -> HashMap<AlignmentGroupId, AlignmentGroupMetrics>
pub fn all_metrics(&self) -> HashMap<AlignmentGroupId, AlignmentGroupMetrics>
Returns metrics for all groups.
Sourcepub fn group(
&self,
group_id: &AlignmentGroupId,
) -> Option<&WatermarkAlignmentGroup>
pub fn group( &self, group_id: &AlignmentGroupId, ) -> Option<&WatermarkAlignmentGroup>
Returns a reference to a specific group.
Sourcepub fn group_mut(
&mut self,
group_id: &AlignmentGroupId,
) -> Option<&mut WatermarkAlignmentGroup>
pub fn group_mut( &mut self, group_id: &AlignmentGroupId, ) -> Option<&mut WatermarkAlignmentGroup>
Returns a mutable reference to a specific group.
Sourcepub fn source_group(&self, source_id: usize) -> Option<&AlignmentGroupId>
pub fn source_group(&self, source_id: usize) -> Option<&AlignmentGroupId>
Returns the group ID for a source.
Sourcepub fn group_count(&self) -> usize
pub fn group_count(&self) -> usize
Returns the number of groups.
Sourcepub fn total_source_count(&self) -> usize
pub fn total_source_count(&self) -> usize
Returns the total number of sources across all groups.
Sourcepub fn should_resume(&self, source_id: usize) -> bool
pub fn should_resume(&self, source_id: usize) -> bool
Checks if a source should resume.
Trait Implementations§
Source§impl Debug for AlignmentGroupCoordinator
impl Debug for AlignmentGroupCoordinator
Source§impl Default for AlignmentGroupCoordinator
impl Default for AlignmentGroupCoordinator
Source§fn default() -> AlignmentGroupCoordinator
fn default() -> AlignmentGroupCoordinator
Auto Trait Implementations§
impl Freeze for AlignmentGroupCoordinator
impl RefUnwindSafe for AlignmentGroupCoordinator
impl Send for AlignmentGroupCoordinator
impl Sync for AlignmentGroupCoordinator
impl Unpin for AlignmentGroupCoordinator
impl UnwindSafe for AlignmentGroupCoordinator
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.