The routine class is used by the processor during the routine calculation for storing the idle functions and the signals which should be triggered in the next loop. This was added due to the current loop not providing a simple means for objects inside the loop determining what has happened within the routine calculation and the functionality required for the upgraded idle required more complex algorithms which would not fit well inside the entire routine loop method.
コード例 #1
0
ファイル: sig_awake.php プロジェクト: prggmr/xpspl
 /**
  * Runs the routine.
  *
  * This checks if the appriorate amount of time has passed and emits the 
  * awake signal if so.
  * 
  * @return  boolean
  */
 public function routine(\XPSPL\Routine $routine = null)
 {
     if ($this->get_idle()->has_time_passed()) {
         $routine->add_signal($this);
         $this->get_idle()->set_time($this->_time);
     }
     $routine->add_idle($this);
     return true;
 }
コード例 #2
0
ファイル: sig_suite.php プロジェクト: prggmr/xpspl
 /**
  * Routine function.
  */
 public function routine(\XPSPL\Routine $routine)
 {
     if (null === $this->_test) {
         return false;
     }
     $routine->add_signal($this);
     $routine->add_signal($this->_test);
     $this->_test = null;
     return true;
 }
コード例 #3
0
ファイル: sig_cron.php プロジェクト: prggmr/xpspl
 /**
  * Determines when the time signal should fire, otherwise returning
  * the processor to idle until it will.
  * 
  * @return  integer
  */
 public function routine(\XPSPL\Routine $routine = null)
 {
     if ($this->get_idle()->has_time_passed()) {
         $this->_next_run = $this->_cron->getNextRunDate()->getTimestamp();
         $routine->add_signal($this);
     }
     $this->get_idle()->set_time($this->_next_run - time());
     $routine->add_idle($this);
     return true;
 }
コード例 #4
0
ファイル: socket.php プロジェクト: prggmr/xpspl
 /**
  * Registers the idle process.
  *
  * @return  void
  */
 public function routine(\XPSPL\Routine $routine)
 {
     if (null === $this->_connection) {
         $this->_connect();
         $routine->add_signal(new SIG_Connect($this->_connection));
     }
     $routine->add_idle($this);
 }
コード例 #5
0
ファイル: sig_test.php プロジェクト: prggmr/xpspl
 /**
  * Runs the routine.
  */
 public function routine(\XPSPL\Routine $routine)
 {
     if (!$this->_run) {
         $this->_run = true;
         $routine->add_signal($this);
     }
 }
コード例 #6
0
ファイル: routine.php プロジェクト: prggmr/xpspl
 /**
  * Run the idle function.
  */
 public function routine(\XPSPL\Routine $routine)
 {
     // TODO - Add function to fetch lowest idle time
     $routine->add_idle($this);
 }
コード例 #7
0
ファイル: sig_upload.php プロジェクト: prggmr/xpspl
 public function routine(\XPSPL\Routine $routine)
 {
     if (count($this->_files) > 0 || count($this->_uploading) > 0) {
         $routine->add_idle($this);
     }
 }