Exemple #1
0
 public function add(TimerInterface $timer)
 {
     $interval = $timer->getInterval();
     $scheduledAt = $interval + $this->getTime();
     $this->timers->attach($timer, $scheduledAt);
     $this->scheduler->insert($timer, -$scheduledAt);
 }
 public function add(TimerInterface $timer)
 {
     $interval = $timer->getInterval();
     if ($interval < self::MIN_RESOLUTION) {
         throw new InvalidArgumentException('Timer events do not support sub-millisecond timeouts.');
     }
     $scheduledAt = $interval + $this->getTime();
     $this->timers->attach($timer, $scheduledAt);
     $this->scheduler->insert($timer, -$scheduledAt);
 }
Exemple #3
0
 /**
  * Schedule a timer for execution.
  *
  * @param TimerInterface $timer
  */
 private function scheduleTimer(TimerInterface $timer)
 {
     $flags = Event::TIMEOUT;
     if ($timer->isPeriodic()) {
         $flags |= Event::PERSIST;
     }
     $event = new Event($this->eventBase, -1, $flags, $this->timerCallback, $timer);
     $this->timerEvents[$timer] = $event;
     $event->add($timer->getInterval());
 }
 private function setupTimer(TimerInterface $timer)
 {
     $dummyCallback = function () {
     };
     $interval = $timer->getInterval();
     if ($timer->isPeriodic()) {
         $libevTimer = new \libev\TimerEvent($dummyCallback, $interval, $interval);
     } else {
         $libevTimer = new \libev\TimerEvent($dummyCallback, $interval);
     }
     $libevTimer->setCallback(function () use($timer) {
         call_user_func($timer->getCallback(), $timer);
         if (!$timer->isPeriodic()) {
             $timer->cancel();
         }
     });
     $this->timers->attach($timer, $libevTimer);
     $this->loop->add($libevTimer);
     return $timer;
 }
 /**
  * @return float
  */
 public function getInterval()
 {
     return $this->timer->getInterval();
 }