package core type RecordType byte const ( RecordData RecordType = iota RecordWatermark RecordBarrier ) type StreamRecord[T any] struct { Value T Key string // for keyBy stateful processing Timestamp int64 // epoch ms time BarrierID uint64 // ID checkpoint barrier Type RecordType } func NewDataRecord[T any](key string, val T, timestamp int64) StreamRecord[T] { return StreamRecord[T]{ Value: val, Key: key, Timestamp: timestamp, Type: RecordData, } } func NewWatermarkRecord[T any](timestamp int64) StreamRecord[T] { return StreamRecord[T]{ Type: RecordWatermark, Timestamp: timestamp, } } func NewBarrierRecord[T any](barrierID uint64) StreamRecord[T] { return StreamRecord[T]{ Type: RecordBarrier, BarrierID: barrierID, } }