protected function getData($file, $path) {
		// Options
		$options = (int) stream_get_contents($file, self::DATA_OFFSET - self::OPTIONS_OFFSET - 1, self::OPTIONS_OFFSET);
		
		if ($options === false) {
			fclose($file);
			throw new OperationFailed('Unable to get the metadata content from: ' . $path);
		}
		
		$data = stream_get_contents($file, -1, self::DATA_OFFSET);
		
		// Data
		if ($data === false) {
			fclose($file);
			throw new OperationFailed('Unable to get the cache content from: ' . $path);
		}
		
		// Decompression
		if ($options & self::OPTION_COMPRESSED) {
			$data = gzuncompress($data);
		}
		
		if ($data === false) {
			throw new OperationFailed('Unable to decompress data, file: ' . $path);
		}
		
		// Deserealization
		if ($options & self::OPTION_SERIALIZED) {
			$data = unserialize($data);
		}
		
		if ($data === false) {
			throw new OperationFailed('Unable to deserialize data, file: ' . $path);
		}
		
		return $data;
	}