Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/infrastructure/daemon/workers/clock/PhabricatorMetronomicTriggerClock.php
12242 views
1
<?php
2
3
/**
4
* Triggers an event repeatedly, delaying a fixed number of seconds between
5
* triggers.
6
*
7
* For example, this clock can trigger an event every 30 seconds.
8
*/
9
final class PhabricatorMetronomicTriggerClock extends PhabricatorTriggerClock {
10
11
public function validateProperties(array $properties) {
12
PhutilTypeSpec::checkMap(
13
$properties,
14
array(
15
'period' => 'int',
16
));
17
}
18
19
public function getNextEventEpoch($last_epoch, $is_reschedule) {
20
$period = $this->getProperty('period');
21
22
if ($last_epoch) {
23
$next = $last_epoch + $period;
24
$next = max($next, $last_epoch + 1);
25
} else {
26
$next = PhabricatorTime::getNow() + $period;
27
}
28
29
return $next;
30
}
31
32
}
33
34