aboutsummaryrefslogtreecommitdiffhomepage
path: root/assets/php/vendor/react/event-loop/src/Timer/Timers.php
diff options
context:
space:
mode:
Diffstat (limited to 'assets/php/vendor/react/event-loop/src/Timer/Timers.php')
-rwxr-xr-xassets/php/vendor/react/event-loop/src/Timer/Timers.php109
1 files changed, 0 insertions, 109 deletions
diff --git a/assets/php/vendor/react/event-loop/src/Timer/Timers.php b/assets/php/vendor/react/event-loop/src/Timer/Timers.php
deleted file mode 100755
index 17bbdac..0000000
--- a/assets/php/vendor/react/event-loop/src/Timer/Timers.php
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-
-namespace React\EventLoop\Timer;
-
-use React\EventLoop\TimerInterface;
-use SplObjectStorage;
-use SplPriorityQueue;
-
-/**
- * A scheduler implementation that can hold multiple timer instances
- *
- * This class should only be used internally, see TimerInterface instead.
- *
- * @see TimerInterface
- * @internal
- */
-final class Timers
-{
- private $time;
- private $timers;
- private $scheduler;
-
- public function __construct()
- {
- $this->timers = new SplObjectStorage();
- $this->scheduler = new SplPriorityQueue();
- }
-
- public function updateTime()
- {
- return $this->time = microtime(true);
- }
-
- public function getTime()
- {
- return $this->time ?: $this->updateTime();
- }
-
- public function add(TimerInterface $timer)
- {
- $interval = $timer->getInterval();
- $scheduledAt = $interval + microtime(true);
-
- $this->timers->attach($timer, $scheduledAt);
- $this->scheduler->insert($timer, -$scheduledAt);
- }
-
- public function contains(TimerInterface $timer)
- {
- return $this->timers->contains($timer);
- }
-
- public function cancel(TimerInterface $timer)
- {
- $this->timers->detach($timer);
- }
-
- public function getFirst()
- {
- while ($this->scheduler->count()) {
- $timer = $this->scheduler->top();
-
- if ($this->timers->contains($timer)) {
- return $this->timers[$timer];
- }
-
- $this->scheduler->extract();
- }
-
- return null;
- }
-
- public function isEmpty()
- {
- return count($this->timers) === 0;
- }
-
- public function tick()
- {
- $time = $this->updateTime();
- $timers = $this->timers;
- $scheduler = $this->scheduler;
-
- while (!$scheduler->isEmpty()) {
- $timer = $scheduler->top();
-
- if (!isset($timers[$timer])) {
- $scheduler->extract();
- $timers->detach($timer);
-
- continue;
- }
-
- if ($timers[$timer] >= $time) {
- break;
- }
-
- $scheduler->extract();
- call_user_func($timer->getCallback(), $timer);
-
- if ($timer->isPeriodic() && isset($timers[$timer])) {
- $timers[$timer] = $scheduledAt = $timer->getInterval() + $time;
- $scheduler->insert($timer, -$scheduledAt);
- } else {
- $timers->detach($timer);
- }
- }
- }
-}