///|
pub(all) struct EventAssignment {
event : StreamEvent
status : EventStatus
watermark_ms : Int
windows : Array[TimeWindow]
} derive(Eq, Debug)
///|
pub fn assign_event(
state : WatermarkState,
spec : WindowSpec,
event : StreamEvent,
) -> EventAssignment {
{
event,
status: state.classify(event),
watermark_ms: state.current_watermark_ms,
windows: assign_windows(spec, event.event_time_ms),
}
}
///|
pub fn EventAssignment::accepted(self : EventAssignment) -> Bool {
self.status != TooLate
}