// Exception codes
const EXCEPTION_BAD_MAGIC = 0xe100;
+ /**
+ * Minimum block length
+ */
+ private $minimumBlockLength = 0;
+
/**
* Protected constructor
*
* @return $length Minimum length for one entry/block
*/
public function calculateMinimumBlockLength () {
- // Calulcate it
+ // Is the value "cached"?
/* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('BASE-FILE-STACK: CALLED!');
- $length =
- // Length of entry group
- BaseBinaryFile::LENGTH_GROUP + strlen(chr(BaseBinaryFile::SEPARATOR_GROUP_HASH)) +
- // Hash + value
- self::getHashLength() + strlen(chr(BaseBinaryFile::SEPARATOR_HASH_VALUE)) + 1 +
- // Final separator
- strlen(chr(BaseBinaryFile::SEPARATOR_ENTRIES));
+ if (self::$minimumBlockLength == 0) {
+ // Calulcate it
+ self::$minimumBlockLength =
+ // Length of entry group
+ BaseBinaryFile::LENGTH_GROUP + strlen(chr(BaseBinaryFile::SEPARATOR_GROUP_HASH)) +
+ // Hash + value
+ self::getHashLength() + strlen(chr(BaseBinaryFile::SEPARATOR_HASH_VALUE)) + 1 +
+ // Final separator
+ strlen(chr(BaseBinaryFile::SEPARATOR_ENTRIES));
+ }
// Return it
- /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('BASE-FILE-STACK: length=%d - EXIT!', $length));
- return $length;
+ /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('BASE-FILE-STACK: self::minimumBlockLength=%d - EXIT!', self::$minimumBlockLength));
+ return self::$minimumBlockLength;
}
/**