A much better name is HandleableProtocol.
[core.git] / inc / classes / main / class_BaseFrameworkSystem.php
index 6c9dad6fad00f90653590482eda7f91cd4de341c..07e9a2c682832585e18469648a6030dde0533565 100644 (file)
@@ -5,7 +5,7 @@
  *
  * @author             Roland Haeder <webmaster@shipsimu.org>
  * @version            0.0.0
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2013 Core Developer Team
+ * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2014 Core Developer Team
  * @license            GNU GPL 3.0 or any newer version
  * @link               http://www.shipsimu.org
  *
  */
 class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        /**
-        * Length of count
-        */
-       const LENGTH_COUNT = 20;
-
-       /**
-        * Length of position
+        * Length of output from hash()
         */
-       const LENGTH_POSITION = 20;
+       private static $hashLength = NULL;
 
        /**
         * The real class name
@@ -121,7 +116,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        /**
         * Instance of the stacker
         */
-       private $stackerInstance = NULL;
+       private $stackInstance = NULL;
 
        /**
         * A Compressor instance
@@ -134,7 +129,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        private $parserInstance = NULL;
 
        /**
-        * A ProtocolHandler instance
+        * A HandleableProtocol instance
         */
        private $protocolInstance = NULL;
 
@@ -189,10 +184,25 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        private $pointerInstance = NULL;
 
        /**
-        * An instance of an index
+        * An instance of an Indexable class
         */
        private $indexInstance = NULL;
 
+       /**
+        * An instance of a Block class
+        */
+       private $blockInstance = NULL;
+
+       /**
+        * A Minable instance
+        */
+       private $minableInstance = NULL;
+
+       /**
+        * A FrameworkDirectory instance
+        */
+       private $directoryInstance = NULL;
+
        /**
         * Thousands separator
         */
@@ -218,41 +228,6 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
         */
        private $genericArray = array();
 
-       /**
-        * Length of output from hash()
-        */
-       private static $hashLength = NULL;
-
-       /**
-        * Counter for total entries
-        */
-       private $totalEntries = 0;
-
-       /**
-        * Current seek position
-        */
-       private $seekPosition = 0;
-
-       /**
-        * Size of header
-        */
-       private $headerSize = 0;
-
-       /**
-        * File header
-        */
-       private $header = array();
-
-       /**
-        * Seek positions for gaps ("fragmentation")
-        */
-       private $gaps = array();
-
-       /**
-        * Seek positions for damaged entries (e.g. mismatching hash sum, ...)
-        */
-       private $damagedEntries = array();
-
        /***********************
         * Exception codes.... *
         ***********************/
@@ -988,20 +963,20 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        /**
         * Setter for stacker instance
         *
-        * @param       $stackerInstance        An instance of an stacker
+        * @param       $stackInstance  An instance of an stacker
         * @return      void
         */
-       public final function setStackerInstance (Stackable $stackerInstance) {
-               $this->stackerInstance = $stackerInstance;
+       public final function setStackInstance (Stackable $stackInstance) {
+               $this->stackInstance = $stackInstance;
        }
 
        /**
         * Getter for stacker instance
         *
-        * @return      $stackerInstance        An instance of an stacker
+        * @return      $stackInstance  An instance of an stacker
         */
-       public final function getStackerInstance () {
-               return $this->stackerInstance;
+       public final function getStackInstance () {
+               return $this->stackInstance;
        }
 
        /**
@@ -1043,9 +1018,9 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        }
 
        /**
-        * Setter for ProtocolHandler instance
+        * Setter for HandleableProtocol instance
         *
-        * @param       $protocolInstance       An instance of an ProtocolHandler
+        * @param       $protocolInstance       An instance of an HandleableProtocol
         * @return      void
         */
        public final function setProtocolInstance (ProtocolHandler $protocolInstance = NULL) {
@@ -1053,9 +1028,9 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        }
 
        /**
-        * Getter for ProtocolHandler instance
+        * Getter for HandleableProtocol instance
         *
-        * @return      $protocolInstance       An instance of an ProtocolHandler
+        * @return      $protocolInstance       An instance of an HandleableProtocol
         */
        public final function getProtocolInstance () {
                return $this->protocolInstance;
@@ -1311,6 +1286,63 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
                return $this->indexInstance;
        }
 
+       /**
+        * Setter for Block instance
+        *
+        * @param       $blockInstance  An instance of an Block class
+        * @return      void
+        */
+       protected final function setBlockInstance (Block $blockInstance) {
+               $this->blockInstance = $blockInstance;
+       }
+
+       /**
+        * Getter for Block instance
+        *
+        * @return      $blockInstance  An instance of an Block class
+        */
+       public final function getBlockInstance () {
+               return $this->blockInstance;
+       }
+
+       /**
+        * Setter for Minable instance
+        *
+        * @param       $minableInstance        A Minable instance
+        * @return      void
+        */
+       protected final function setMinableInstance (Minable $minableInstance) {
+               $this->minableInstance = $minableInstance;
+       }
+
+       /**
+        * Getter for minable instance
+        *
+        * @return      $minableInstance        A Minable instance
+        */
+       protected final function getMinableInstance () {
+               return $this->minableInstance;
+       }
+
+       /**
+        * Setter for FrameworkDirectory instance
+        *
+        * @param       $directoryInstance      A FrameworkDirectoryPointer instance
+        * @return      void
+        */
+       protected final function setDirectoryInstance (FrameworkDirectory $directoryInstance) {
+               $this->directoryInstance = $directoryInstance;
+       }
+
+       /**
+        * Getter for FrameworkDirectory instance
+        *
+        * @return      $directoryInstance      A FrameworkDirectory instance
+        */
+       protected final function getDirectoryInstance () {
+               return $this->directoryInstance;
+       }
+
        /**
         * Checks whether an object equals this object. You should overwrite this
         * method to implement own equality checks
@@ -2842,277 +2874,6 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
                // ... and return it
                return $translated;
        }
-
-       /**
-        * Initializes counter for valid entries, arrays for damaged entries and
-        * an array for gap seek positions. If you call this method on your own,
-        * please re-analyze the file structure. So you are better to call
-        * analyzeFile() instead of this method.
-        *
-        * @return      void
-        */
-       protected function initCountersGapsArray () {
-               // Init counter and seek position
-               $this->setCounter(0);
-               $this->setSeekPosition(0);
-
-               // Init arrays
-               $this->gaps = array();
-               $this->damagedEntries = array();
-       }
-
-       /**
-        * Getter for total entries
-        *
-        * @return      $totalEntries   Total entries in this file
-        */
-       protected final function getCounter () {
-               // Get it
-               return $this->totalEntries;
-       }
-
-       /**
-        * Setter for total entries
-        *
-        * @param       $totalEntries   Total entries in this file
-        * @return      void
-        */
-       protected final function setCounter ($counter) {
-               // Set it
-               $this->totalEntries = $counter;
-       }
-
-       /**
-        * Increment counter
-        *
-        * @return      void
-        */
-       protected final function incrementCounter () {
-               // Get it
-               $this->totalEntries++;
-       }
-
-       /**
-        * Getter for header size
-        *
-        * @return      $totalEntries   Size of file header
-        */
-       protected final function getHeaderSize () {
-               // Get it
-               return $this->headerSize;
-       }
-
-       /**
-        * Setter for header size
-        *
-        * @param       $headerSize             Size of file header
-        * @return      void
-        */
-       protected final function setHeaderSize ($headerSize) {
-               // Set it
-               $this->headerSize = $headerSize;
-       }
-
-       /**
-        * Getter for header array
-        *
-        * @return      $totalEntries   Size of file header
-        */
-       protected final function getHeade () {
-               // Get it
-               return $this->header;
-       }
-
-       /**
-        * Setter for header
-        *
-        * @param       $header         Array for a file header
-        * @return      void
-        */
-       protected final function setHeader (array $header) {
-               // Set it
-               $this->header = $header;
-       }
-
-       /**
-        * Getter for seek position
-        *
-        * @return      $seekPosition   Current seek position (stored here in object)
-        */
-       protected final function getSeekPosition () {
-               // Get it
-               return $this->seekPosition;
-       }
-
-       /**
-        * Setter for seek position
-        *
-        * @param       $seekPosition   Current seek position (stored here in object)
-        * @return      void
-        */
-       protected final function setSeekPosition ($seekPosition) {
-               // And set it
-               $this->seekPosition = $seekPosition;
-       }
-
-       /**
-        * Updates seekPosition attribute from file to avoid to much access on file.
-        *
-        * @return      void
-        */
-       protected function updateSeekPosition () {
-               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] CALLED!', __METHOD__, __LINE__));
-
-               // Get key (= seek position)
-               $seekPosition = $this->getIteratorInstance()->key();
-               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] Setting seekPosition=%s', __METHOD__, __LINE__, $seekPosition));
-
-               // And set it here
-               $this->setSeekPosition($seekPosition);
-
-               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] EXIT!', __METHOD__, __LINE__));
-       }
-
-       /**
-        * Checks whether the file header is initialized
-        *
-        * @return      $isInitialized  Whether the file header is initialized
-        */
-       protected function isFileHeaderInitialized () {
-               // Is the method there?
-               assert(is_callable(array($this, 'readFileHeader')));
-
-               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] CALLED!', __METHOD__, __LINE__));
-               // Default is not initialized
-               $isInitialized = FALSE;
-
-               // Is the file initialized?
-               if ($this->isFileInitialized()) {
-                       // Some bytes has been written, so rewind to start of it.
-                       $rewindStatus = $this->getIteratorInstance()->rewind();
-                       //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] rewindStatus=%s', __METHOD__, __LINE__, $rewindStatus));
-
-                       // Is the rewind() call successfull?
-                       if ($rewindStatus != 1) {
-                               // Something bad happened
-                               self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] Could not rewind().', __METHOD__, __LINE__));
-                       } // END - if
-
-                       // Read file header
-                       $this->readFileHeader();
-
-                       // The above method does already check the header
-                       $isInitialized = TRUE;
-               } // END - if
-
-               // Return result
-               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] isInitialized=%d - EXIT!', __METHOD__, __LINE__, intval($isInitialized)));
-               return $isInitialized;
-       }
-
-       /**
-        * Checks whether the assigned file has been initialized
-        *
-        * @return      $isInitialized          Whether the file's size is zero
-        */
-       protected function isFileInitialized () {
-               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] CALLED!', __METHOD__, __LINE__));
-
-               // Get it from iterator which holds the pointer instance. If FALSE is returned
-               $fileSize = $this->getIteratorInstance()->size();
-               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] fileSize=%s', __METHOD__, __LINE__, $fileSize));
-
-               /*
-                * The returned file size should not be FALSE or NULL as this means
-                * that the pointer class does not work correctly.
-                */
-               assert(is_int($fileSize));
-
-               // Is more than 0 returned?
-               $isInitialized = ($fileSize > 0);
-
-               // Return result
-               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] isInitialized=%d - EXIT!', __METHOD__, __LINE__, intval($isInitialized)));
-               return $isInitialized;
-       }
-
-       /**
-        * Creates the assigned file
-        *
-        * @return      void
-        */
-       protected function createFileHeader () {
-               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] CALLED!', __METHOD__, __LINE__));
-               // The file's header should not be initialized here
-               assert(!$this->isFileHeaderInitialized());
-
-               // Simple flush file header which will create it.
-               $this->flushFileHeader();
-
-               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] EXIT!!', __METHOD__, __LINE__));
-       }
-
-       /**
-        * Writes data at given position
-        *
-        * @param       $seekPosition   Seek position
-        * @param       $data                   Data to be written
-        * @return      void
-        */
-       protected function writeData ($seekPosition, $data) {
-               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] seekPosition=%s,data()=%s - CALLED!', __METHOD__, __LINE__, $seekPosition, strlen($data)));
-
-               // Write data at given position
-               $this->getIteratorInstance()->writeAtPosition($seekPosition, $data);
-
-               // Update seek position
-               $this->updateSeekPosition();
-
-               // Flush header
-               $this->flushHeader();
-
-               // Seek to old position
-               $this->seekToOldPosition();
-               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] EXIT!', __METHOD__, __LINE__));
-       }
-
-       /**
-        * Pre-allocates file (if enabled) with some space for later faster write access.
-        *
-        * @param       $type   Type of the file
-        * @return      void
-        */
-       protected function preAllocateFile ($type) {
-               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] CALLED!', __METHOD__, __LINE__));
-
-               // Is it enabled?
-               if ($this->getConfigInstance()->getConfigEntry($type . '_pre_allocate_enabled') != 'Y') {
-                       // Not enabled
-                       self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] Not pre-allocating file.', __METHOD__, __LINE__));
-
-                       // Don't continue here.
-                       return;
-               } // END - if
-
-               // Message to user
-               self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] Pre-allocating file ...', __METHOD__, __LINE__));
-
-               /*
-                * Calculate minimum length for one entry:
-                * minimum length = hash length + separator + name + minimum entry size = ?? + 1 + 10 + 1 = ??
-                */
-               $minLengthEntry = self::getHashLength() + strlen(self::SEPARATOR_HASH_NAME) + self::LENGTH_NAME + 1;
-               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] minLengthEntry=%s', __METHOD__, __LINE__, $minLengthEntry));
-
-               // Calulcate seek position
-               $seekPosition = $minLengthEntry * $this->getConfigInstance()->getConfigEntry($type . '_pre_allocate_count');
-               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] seekPosition=%s', __METHOD__, __LINE__, $seekPosition));
-
-               // Now simply write a NUL there. This will pre-allocate the file.
-               $this->writeData($seekPosition, chr(0));
-
-               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] EXIT!', __METHOD__, __LINE__));
-       }
 }
 
 // [EOF]