pub struct StreamJoinNode {
pub left_stream: String,
pub right_stream: String,
pub join_type: JoinType,
pub join_strategy: JoinStrategy,
pub left_key_extractor: Box<dyn Fn(&StreamEvent) -> Option<String> + Send + Sync>,
pub right_key_extractor: Box<dyn Fn(&StreamEvent) -> Option<String> + Send + Sync>,
pub join_condition: Box<dyn Fn(&StreamEvent, &StreamEvent) -> bool + Send + Sync>,
/* private fields */
}Expand description
Stream join node for RETE network Performs windowed joins between two streams based on join conditions
Fields§
§left_stream: StringName of the left input stream
right_stream: StringName of the right input stream
join_type: JoinTypeJoin type (inner, left outer, right outer, full outer)
join_strategy: JoinStrategyJoin strategy (time window, count window, session window)
left_key_extractor: Box<dyn Fn(&StreamEvent) -> Option<String> + Send + Sync>Join key extractor for left stream
right_key_extractor: Box<dyn Fn(&StreamEvent) -> Option<String> + Send + Sync>Join key extractor for right stream
join_condition: Box<dyn Fn(&StreamEvent, &StreamEvent) -> bool + Send + Sync>Additional join condition predicate
Implementations§
Source§impl StreamJoinNode
impl StreamJoinNode
Sourcepub fn new(
left_stream: String,
right_stream: String,
join_type: JoinType,
join_strategy: JoinStrategy,
left_key_extractor: Box<dyn Fn(&StreamEvent) -> Option<String> + Send + Sync>,
right_key_extractor: Box<dyn Fn(&StreamEvent) -> Option<String> + Send + Sync>,
join_condition: Box<dyn Fn(&StreamEvent, &StreamEvent) -> bool + Send + Sync>,
) -> Self
pub fn new( left_stream: String, right_stream: String, join_type: JoinType, join_strategy: JoinStrategy, left_key_extractor: Box<dyn Fn(&StreamEvent) -> Option<String> + Send + Sync>, right_key_extractor: Box<dyn Fn(&StreamEvent) -> Option<String> + Send + Sync>, join_condition: Box<dyn Fn(&StreamEvent, &StreamEvent) -> bool + Send + Sync>, ) -> Self
Create a new stream join node
Sourcepub fn process_left(&mut self, event: StreamEvent) -> Vec<JoinedEvent>
pub fn process_left(&mut self, event: StreamEvent) -> Vec<JoinedEvent>
Process a left stream event and produce joined events
Sourcepub fn process_right(&mut self, event: StreamEvent) -> Vec<JoinedEvent>
pub fn process_right(&mut self, event: StreamEvent) -> Vec<JoinedEvent>
Process a right stream event and produce joined events
Sourcepub fn update_watermark(&mut self, new_watermark: i64) -> Vec<JoinedEvent>
pub fn update_watermark(&mut self, new_watermark: i64) -> Vec<JoinedEvent>
Update watermark and evict old events
Sourcepub fn get_stats(&self) -> JoinNodeStats
pub fn get_stats(&self) -> JoinNodeStats
Get buffer statistics (for monitoring and debugging)
Auto Trait Implementations§
impl Freeze for StreamJoinNode
impl !RefUnwindSafe for StreamJoinNode
impl Send for StreamJoinNode
impl Sync for StreamJoinNode
impl Unpin for StreamJoinNode
impl !UnwindSafe for StreamJoinNode
Blanket Implementations§
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
Mutably borrows from an owned value. Read more