main loop in own method
This commit is contained in:
		| @@ -358,36 +358,43 @@ class ManiaControl implements CommandListener, TimerListener { | |||||||
|  |  | ||||||
| 		// Main loop | 		// Main loop | ||||||
| 		while (!$this->shutdownRequested) { | 		while (!$this->shutdownRequested) { | ||||||
| 			$loopStart = microtime(true); | 			$this->loop(); | ||||||
|  |  | ||||||
| 			// Disable script timeout |  | ||||||
| 			set_time_limit(self::SCRIPT_TIMEOUT); |  | ||||||
|  |  | ||||||
| 			try { |  | ||||||
| 				// Manager callbacks |  | ||||||
| 				$this->callbackManager->manageCallbacks(); |  | ||||||
| 			} catch (TransportException $e) { |  | ||||||
| 				$this->log("Connection interrupted!"); |  | ||||||
| 				// TODO remove |  | ||||||
| 				$this->errorHandler->handleException($e, false); |  | ||||||
| 				$this->quit($e->getMessage()); |  | ||||||
| 			} |  | ||||||
|  |  | ||||||
| 			// Manage FileReader |  | ||||||
| 			$this->fileReader->appendData(); |  | ||||||
|  |  | ||||||
| 			// Yield for next tick |  | ||||||
| 			$loopEnd = microtime(true); |  | ||||||
| 			$sleepTime = (int)(2500 - ($loopEnd - $loopStart) * 1000000); |  | ||||||
| 			if ($sleepTime > 0) { |  | ||||||
| 				usleep($sleepTime); |  | ||||||
| 			} |  | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		// Shutdown | 		// Shutdown | ||||||
| 		$this->quit(); | 		$this->quit(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * Perform the Main Loop | ||||||
|  | 	 */ | ||||||
|  | 	private function loop() { | ||||||
|  | 		$loopStart = microtime(true); | ||||||
|  |  | ||||||
|  | 		// Disable script timeout | ||||||
|  | 		set_time_limit(self::SCRIPT_TIMEOUT); | ||||||
|  |  | ||||||
|  | 		try { | ||||||
|  | 			$this->callbackManager->manageCallbacks(); | ||||||
|  | 		} catch (TransportException $e) { | ||||||
|  | 			$this->log("Connection interrupted!"); | ||||||
|  | 			// TODO remove | ||||||
|  | 			$this->errorHandler->handleException($e, false); | ||||||
|  | 			$this->quit($e->getMessage()); | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		// Manage FileReader | ||||||
|  | 		$this->fileReader->appendData(); | ||||||
|  |  | ||||||
|  | 		// Yield for next tick | ||||||
|  | 		$loopEnd = microtime(true); | ||||||
|  | 		$loopDuration = $loopEnd - $loopStart; | ||||||
|  | 		$sleepTime = (int)(2500 - $loopDuration * 1000000); | ||||||
|  | 		if ($sleepTime > 0) { | ||||||
|  | 			usleep($sleepTime); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
| 	 * Connect to ManiaPlanet server | 	 * Connect to ManiaPlanet server | ||||||
| 	 */ | 	 */ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user