original_string: private function __process($maximum=5) {
  		
  		$remaining = $maximum;
  		
  		do {
  			$starttime = (microtime(true) * 1000000);
  			$read = array($this->socket);
  			$write = array();
  			$except = array();
  			if (is_null($maximum)) {
  				$secs = NULL;
  				$usecs = NULL;
  			} else if ($maximum == 0) {
  				$secs = 0;
  				$usecs = 0;
  			} else {
  				$usecs = $remaining % 1000000;
  				$secs = floor(($remaining - $usecs) / 1000000);
  			}
  			$updated = @stream_select($read, $write, $except, $secs, $usecs);
  			if ($updated === false) {
  				$this->log->log("Error on stream_select()",  XMPPHP_Log::LEVEL_VERBOSE);				
  				if ($this->reconnect) {
  					$this->doReconnect();
  				} else {
  					fclose($this->socket);
  					$this->socket = NULL;
  					return false;
  				}
  			} else if ($updated > 0) {
  				# XXX: Is this big enough?
  				$buff = @fread($this->socket, 4096);
  				if(!$buff) { 
  					if($this->reconnect) {
  						$this->doReconnect();
  					} else {
  						fclose($this->socket);
  						$this->socket = NULL;
  						return false;
  					}
  				}
  				$this->log->log("RECV: $buff",  XMPPHP_Log::LEVEL_VERBOSE);
  				xml_parse($this->parser, $buff, false);
  			} else {
  				# $updated == 0 means no changes during timeout.
  			}
  			$endtime = (microtime(true)*1000000);
  			$time_past = $endtime - $starttime;
  			$remaining = $remaining - $time_past;
  		} while (is_null($maximum) || $remaining > 0);
  		return true;
  	}
code: private function __process($maximum=5) {
  		
  		$remaining = $maximum;
  		
  		do {
  			$starttime = (microtime(true) * 1000000);
  			$read = array($this->socket);
  			$write = array();
  			$except = array();
  			if (is_null($maximum)) {
  				$secs = NULL;
  				$usecs = NULL;
  			} else if ($maximum == 0) {
  				$secs = 0;
  				$usecs = 0;
  			} else {
  				$usecs = $remaining % 1000000;
  				$secs = floor(($remaining - $usecs) / 1000000);
  			}
  			$updated = @stream_select($read, $write, $except, $secs, $usecs);
  			if ($updated === false) {
  				$this->log->log("Error on stream_select()",  XMPPHP_Log::LEVEL_VERBOSE);				
  				if ($this->reconnect) {
  					$this->doReconnect();
  				} else {
  					fclose($this->socket);
  					$this->socket = NULL;
  					return false;
  				}
  			} else if ($updated > 0) {
  				# XXX: Is this big enough?
  				$buff = @fread($this->socket, 4096);
  				if(!$buff) { 
  					if($this->reconnect) {
  						$this->doReconnect();
  					} else {
  						fclose($this->socket);
  						$this->socket = NULL;
  						return false;
  					}
  				}
  				$this->log->log("RECV: $buff",  XMPPHP_Log::LEVEL_VERBOSE);
  				xml_parse($this->parser, $buff, false);
  			} else {
  				# $updated == 0 means no changes during timeout.
  			}
  			$endtime = (microtime(true)*1000000);
  			$time_past = $endtime - $starttime;
  			$remaining = $remaining - $time_past;
  		} while (is_null($maximum) || $remaining > 0);
  		return true;
  	}
code_tokens: private function __process ( $ maximum = 5 ) { $ remaining = $ maximum ; do { $ starttime = ( microtime ( true ) * 1000000 ) ; $ read = array ( $ this -> socket ) ; $ write = array ( ) ; $ except = array ( ) ; if ( is_null ( $ maximum ) ) { $ secs = NULL ; $ usecs = NULL ; } else if ( $ maximum == 0 ) { $ secs = 0 ; $ usecs = 0 ; } else { $ usecs = $ remaining % 1000000 ; $ secs = floor ( ( $ remaining - $ usecs ) / 1000000 ) ; } $ updated = @ stream_select ( $ read , $ write , $ except , $ secs , $ usecs ) ; if ( $ updated === false ) { $ this -> log -> log ( "Error on stream_select()" , XMPPHP_Log :: LEVEL_VERBOSE ) ; if ( $ this -> reconnect ) { $ this -> doReconnect ( ) ; } else { fclose ( $ this -> socket ) ; $ this -> socket = NULL ; return false ; } } else if ( $ updated > 0 ) { # XXX: Is this big enough? $ buff = @ fread ( $ this -> socket , 4096 ) ; if ( ! $ buff ) { if ( $ this -> reconnect ) { $ this -> doReconnect ( ) ; } else { fclose ( $ this -> socket ) ; $ this -> socket = NULL ; return false ; } } $ this -> log -> log ( "RECV: $buff" , XMPPHP_Log :: LEVEL_VERBOSE ) ; xml_parse ( $ this -> parser , $ buff , false ) ; } else { # $updated == 0 means no changes during timeout. } $ endtime = ( microtime ( true ) * 1000000 ) ; $ time_past = $ endtime - $ starttime ; $ remaining = $ remaining - $ time_past ; } while ( is_null ( $ maximum ) || $ remaining > 0 ) ; return true ; }
docstring: Core reading tool
  0 -> only read if data is immediately ready
  NULL -> wait forever and ever
  integer -> process for this amount of time
docstring_tokens: Core reading tool 0 - > only read if data is immediately ready NULL - > wait forever and ever integer - > process for this amount of time