if (!
$this->waitUntil
||
$this->waitUntil >
($now =
$this->clock->
now()) || !
$checkpoint->
acquire($now) ) { return;
} $startTime =
$checkpoint->
from();
$lastTime =
$checkpoint->
time();
$lastIndex =
$checkpoint->
index();
$heap =
$this->
heap($lastTime,
$startTime);
while (!
$heap->
isEmpty() &&
$heap->
top()[0
] <=
$now) { /** @var \DateTimeImmutable $time */
/** @var int $index */
/** @var RecurringMessage $recurringMessage */
[$time,
$index,
$recurringMessage] =
$heap->
extract();
$id =
$recurringMessage->
getId();
$trigger =
$recurringMessage->
getTrigger();
$yield = true;
if ($time <
$lastTime) {