Slide 90
Slide 90 text
82
def throttleWithClock(
tickPeriod: FiniteDuration
): Pipe2[F, TimeStamped[A], Unit, TimeStamped[A]] = {
type PullFromSourceOrTicks =
(Handle[F, TimeStamped[A]], Handle[F, Unit])
Pull[F, TimeStamped[A], (Handle[F, TimeStamped[A]], Handle[F, Unit])]
def awaitInput(upto: Instant): PullFromSourceOrTicks =
(src, ticks) src.receive { (chunk, tl) ??? }
def awaitTick(upto: Instant, p: Chunk[TimeStamped[A]]): PullFromSourceOrTicks =
(src, ticks) ticks.receive1 { (tick, tl) ??? }
_.pull2(_) { (src, ticks) src.receive1 { (ta, tl)
Pull.output1(ta) awaitInput(ta.time)(tl, ticks)
}}
}