protected function __construct ($className) {
// Call parent constructor
parent::__construct($className);
+
+ // Init counters and gaps array
+ $this->initCountersGapsArray();
}
/**
* @throws UnsupportedOperationException If this method is called
*/
public final function getPointer () {
- self::createDebugInstance(__CLASS__)->debugOutput('Unhandled ' . strlen($data) . ' bytes in this stream.');
throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION);
}
public final function isEndOfFileReached () {
return $this->getPointerInstance()->isEndOfFileReached();
}
+
+ /**
+ * Analyzes entries in index file. This will count all found (and valid)
+ * entries, mark invalid as damaged and count gaps ("fragmentation"). If
+ * only gaps are found, the file is considered as "virgin" (no entries).
+ *
+ * @return void
+ */
+ public function analyzeFile () {
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] CALLED!', __METHOD__, __LINE__));
+
+ // Make sure the file is initialized
+ assert($this->isFileInitialized());
+
+ // Init counters and gaps array
+ $this->initCountersGapsArray();
+
+ // Output message (as this may take some time)
+ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] Analyzing file structure ... (this may take some time)', __METHOD__, __LINE__));
+
+ // First rewind to the begining
+ $this->rewind();
+
+ // Then try to load all entries
+ while ($this->valid()) {
+ // Go to next entry
+ $this->next();
+
+ // Get current entry
+ $current = $this->current();
+
+ // Simply output it
+ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] current=%s', __METHOD__, __LINE__, print_r($current, TRUE)));
+ } // END - while
+
+ //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] EXIT!', __METHOD__, __LINE__));
+ }
}
// [EOF]