// The file's header should not be initialized here
assert(!$this->isFileHeaderInitialized());
- // Flush file header
+ // Simple flush file header which will create it.
$this->flushFileHeader();
/* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] EXIT!!', __METHOD__, __LINE__));
);
// Write it to disk (header is always at seek position 0)
- $this->getIteratorInstance()->writeAtPosition(0, $header);
+ $this->writeData(0, $header);
+
+ /* 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
+ */
+ private 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();
$seekPosition = $minLengthEntry * $this->getConfigInstance()->getConfigEntry('file_stack_pre_allocate_count');
/* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] seekPosition=%s', __METHOD__, __LINE__, $seekPosition));
- // Now seek to the position
- $seekStatus = $this->getIteratorInstance()->writeAtPosition($seekPosition, chr(0));
-
- // Did it work?
- /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d:] seekStatus=%d', __METHOD__, __LINE__, $seekStatus));
+ // 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__));
}