103 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace React\EventLoop\Timer;
 | |
| 
 | |
| use React\EventLoop\LoopInterface;
 | |
| 
 | |
| class Timer implements TimerInterface
 | |
| {
 | |
|     const MIN_INTERVAL = 0.000001;
 | |
| 
 | |
|     protected $loop;
 | |
|     protected $interval;
 | |
|     protected $callback;
 | |
|     protected $periodic;
 | |
|     protected $data;
 | |
| 
 | |
|     /**
 | |
|      * Constructor initializes the fields of the Timer
 | |
|      *
 | |
|      * @param LoopInterface $loop     The loop with which this timer is associated
 | |
|      * @param float         $interval The interval after which this timer will execute, in seconds
 | |
|      * @param callable      $callback The callback that will be executed when this timer elapses
 | |
|      * @param bool          $periodic Whether the time is periodic
 | |
|      * @param mixed         $data     Arbitrary data associated with timer
 | |
|      */
 | |
|     public function __construct(LoopInterface $loop, $interval, callable $callback, $periodic = false, $data = null)
 | |
|     {
 | |
|         if ($interval < self::MIN_INTERVAL) {
 | |
|             $interval = self::MIN_INTERVAL;
 | |
|         }
 | |
| 
 | |
|         $this->loop = $loop;
 | |
|         $this->interval = (float) $interval;
 | |
|         $this->callback = $callback;
 | |
|         $this->periodic = (bool) $periodic;
 | |
|         $this->data = null;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * {@inheritdoc}
 | |
|      */
 | |
|     public function getLoop()
 | |
|     {
 | |
|         return $this->loop;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * {@inheritdoc}
 | |
|      */
 | |
|     public function getInterval()
 | |
|     {
 | |
|         return $this->interval;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * {@inheritdoc}
 | |
|      */
 | |
|     public function getCallback()
 | |
|     {
 | |
|         return $this->callback;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * {@inheritdoc}
 | |
|      */
 | |
|     public function setData($data)
 | |
|     {
 | |
|         $this->data = $data;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * {@inheritdoc}
 | |
|      */
 | |
|     public function getData()
 | |
|     {
 | |
|         return $this->data;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * {@inheritdoc}
 | |
|      */
 | |
|     public function isPeriodic()
 | |
|     {
 | |
|         return $this->periodic;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * {@inheritdoc}
 | |
|      */
 | |
|     public function isActive()
 | |
|     {
 | |
|         return $this->loop->isTimerActive($this);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * {@inheritdoc}
 | |
|      */
 | |
|     public function cancel()
 | |
|     {
 | |
|         $this->loop->cancelTimer($this);
 | |
|     }
 | |
| }
 |