JAXLLoop::select PHP Method

select() public static method

public static select ( )
    public static function select()
    {
        $read = self::$read_fds;
        $write = self::$write_fds;
        $except = null;
        $changed = @stream_select($read, $write, $except, self::$secs, self::$usecs);
        if ($changed === false) {
            JAXLLogger::error("error in the event loop, shutting down...");
            /*foreach (self::$read_fds as $fd) {
                      if (is_resource($fd)) {
                              print_r(stream_get_meta_data($fd));
                      }
              }*/
            exit;
        } elseif ($changed > 0) {
            // read callback
            foreach ($read as $r) {
                $fdid = array_search($r, self::$read_fds);
                if (isset(self::$read_fds[$fdid])) {
                    call_user_func(self::$read_cbs[$fdid], self::$read_fds[$fdid]);
                }
            }
            // write callback
            foreach ($write as $w) {
                $fdid = array_search($w, self::$write_fds);
                if (isset(self::$write_fds[$fdid])) {
                    call_user_func(self::$write_cbs[$fdid], self::$write_fds[$fdid]);
                }
            }
            self::$clock->tick();
        } elseif ($changed === 0) {
            //JAXLLogger::debug("nothing changed while selecting for read");
            self::$clock->tick(self::$secs * pow(10, 6) + self::$usecs);
        }
    }