From 7896833cca3a47dea4f76099d7199d6f2200970e Mon Sep 17 00:00:00 2001 From: Roland Haeder Date: Sun, 18 May 2014 00:59:19 +0200 Subject: [PATCH] Introduced writeData() (low-level method). MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Roland Häder --- .../main/stacker/file/class_BaseFileStack.php | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/inc/classes/main/stacker/file/class_BaseFileStack.php b/inc/classes/main/stacker/file/class_BaseFileStack.php index 8a31cfaf..dd8570c4 100644 --- a/inc/classes/main/stacker/file/class_BaseFileStack.php +++ b/inc/classes/main/stacker/file/class_BaseFileStack.php @@ -209,7 +209,7 @@ class BaseFileStack extends BaseStacker { // 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__)); @@ -245,7 +245,23 @@ class BaseFileStack extends BaseStacker { ); // 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(); @@ -284,11 +300,8 @@ class BaseFileStack extends BaseStacker { $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__)); } -- 2.39.5