89 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
|     /**
 | |
|     * @author Tufan Baris YILDIRIM
 | |
|     * -- descrtiption is coming.
 | |
|     */
 | |
|     class ApkStream
 | |
|     {
 | |
|         /**
 | |
|         * file strem, like "fopen"
 | |
|         * 
 | |
|         * @var resource
 | |
|         */
 | |
|         private $stream;
 | |
| 
 | |
|         /**                                   
 | |
|         * @param resource $stream File stream.
 | |
|         * @return ApkStream
 | |
|         */
 | |
|         public function __construct($stream)
 | |
|         {
 | |
|             if(!is_resource($stream))
 | |
|                 // TODO : the resource type must be a regular file stream resource.
 | |
|                 throw new Exception( "Invalid stream" );
 | |
| 
 | |
|             $this->stream = $stream;
 | |
|         }
 | |
| 
 | |
|         /**
 | |
|         * Read the next character from stream.
 | |
|         * 
 | |
|         * @param mixed $length
 | |
|         */
 | |
|         public function read($length = 1)
 | |
|         {
 | |
|             return fread($this->stream,$length);
 | |
|         }
 | |
| 
 | |
|         /**
 | |
|         * check if end of filestream
 | |
|         */
 | |
|         public function feof()
 | |
|         {
 | |
|             return feof($this->stream);
 | |
|         }
 | |
| 
 | |
|         /**
 | |
|         * Jump to the index!
 | |
|         * @param int $offset
 | |
|         */
 | |
|         public function seek($offset)
 | |
|         {
 | |
|             fseek($this->stream,$offset);
 | |
|         }
 | |
| 
 | |
|         /**
 | |
|         * Close the stream
 | |
|         */
 | |
|         public function close()
 | |
|         {
 | |
|             fclose($this->stream);
 | |
|         }
 | |
| 
 | |
|         /**
 | |
|         * Read the next byte
 | |
|         * @return byte
 | |
|         */
 | |
|         public function readByte()
 | |
|         {
 | |
|             return ord($this->read());
 | |
|         }
 | |
| 
 | |
|         /**
 | |
|         * fetch the remaining byte into an array
 | |
|         * 
 | |
|         * @param mixed $count Byte length.
 | |
|         * @return array
 | |
|         */
 | |
|         public function getByteArray($count = null)
 | |
|         {
 | |
|             $bytes = array();
 | |
| 
 | |
|             while(!$this->feof() && ($count === null || count($bytes) < $count))
 | |
|                 $bytes[] = $this->readByte();
 | |
| 
 | |
|             return $bytes;
 | |
|         }
 | |
|     }
 | |
|     
 |