// Return the prepared instance
return $fileInstance;
}
+
+ /**
+ * Writes given value to the file and returns a hash and gap position for it
+ *
+ * @param $groupId Group identifier
+ * @param $value Value to be added to the stack
+ * @return $data Hash and gap position
+ */
+ public function writeValueToFile ($groupId, $value) {
+ // Make sure no objects/resources are added as the serialization may fail
+ assert(!is_object($value));
+ assert(!is_resource($value));
+
+ // Encode/convert the value into a "binary format"
+ $encoded = $this->encodeData($value);
+
+ // Get a strong hash for the "encoded" data
+ $hash = self::hash($encoded);
+
+ // Then write it to the next free gap
+ $data = $this->getBlockInstance()->writeDataToFreeGap($groupId, $hash, $encoded);
+
+ // Return info
+ return $data;
+ }
+
+ /**
+ * Writes given raw data to the file and returns a gap position and length
+ *
+ * @param $groupId Group identifier
+ * @param $hash Hash from encoded value
+ * @param $encoded Encoded value to be written to the file
+ * @return $data Gap position and length of the raw data
+ * @throws UnsupportedOperationException If this method is called
+ */
+ public function writeDataToFreeGap ($groupId, $hash, $encoded) {
+ self::createDebugInstance(__CLASS__)->debugOutput('[' . __METHOD__ . ':' . __LINE__ . '] groupId=' . $groupId . ',hash=' . $hash . ',encoded()=' . strlen($encoded));
+ throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION);
+ }
}
// [EOF]