mirror of
https://github.com/uroni/urbackup_backend.git
synced 2025-10-26 11:36:50 +00:00
Add zstd-7 compression level
(cherry picked from commit 1013f19919c59c5b203d6b858a4897df573be4b0) # Conflicts: # clouddrive/CompressEncrypt.cpp
This commit is contained in:
parent
fee7accafa
commit
faebd8781e
@ -50,6 +50,8 @@ unsigned int CompressionMethodFromString(const std::string & str)
|
||||
return CompressionZstd9;
|
||||
else if (str == "none")
|
||||
return CompressionNone;
|
||||
else if (str == "zstd_7")
|
||||
return CompressionZstd7;
|
||||
else
|
||||
return CompressionZstd3;
|
||||
}
|
||||
@ -87,51 +89,54 @@ bool read_generation( IFile* file, int64 offset, int64& generation)
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
ICompressAndEncrypt* CompressEncryptFactory::createCompressAndEncrypt(const std::string& encryption_key, IFile* file, IOnlineKvStore* online_kv_store, unsigned int compression_id)
|
||||
{
|
||||
ICompressor* compressor;
|
||||
switch (compression_id)
|
||||
{
|
||||
case CompressionLzma5:
|
||||
#ifdef WITH_LZMA
|
||||
compressor = new LzmaCompressor;
|
||||
#else
|
||||
compressor = new CdZstdCompressor(17, CompressionZstd3);
|
||||
#endif
|
||||
break;
|
||||
|
||||
case CompressionZlib5:
|
||||
compressor = new CdZlibCompressor(5, compression_id);
|
||||
break;
|
||||
case CompressionZstd3:
|
||||
case CompressionZstd19:
|
||||
case CompressionZstd9:
|
||||
{
|
||||
int level = 3;
|
||||
switch (compression_id)
|
||||
{
|
||||
case CompressionZstd19:
|
||||
level = 19;
|
||||
case CompressionZstd9:
|
||||
level = 9;
|
||||
}
|
||||
compressor = new CdZstdCompressor(level, CompressionZstd3);
|
||||
} break;
|
||||
case CompressionNone:
|
||||
compressor = nullptr;
|
||||
break;
|
||||
default:
|
||||
return nullptr;
|
||||
}
|
||||
return new CompressAndEncrypt(encryption_key, file, online_kv_store, compressor);
|
||||
}
|
||||
|
||||
IDecryptAndDecompress* CompressEncryptFactory::createDecryptAndDecompress(const std::string& encryption_key, IFile* output_file)
|
||||
{
|
||||
return new DecryptAndDecompress(encryption_key, output_file);
|
||||
}
|
||||
|
||||
|
||||
ICompressAndEncrypt* CompressEncryptFactory::createCompressAndEncrypt(const std::string& encryption_key, IFile* file, IOnlineKvStore* online_kv_store, unsigned int compression_id)
|
||||
{
|
||||
ICompressor* compressor;
|
||||
switch (compression_id)
|
||||
{
|
||||
case CompressionLzma5:
|
||||
#ifdef WITH_LZMA
|
||||
compressor = new LzmaCompressor;
|
||||
#else
|
||||
compressor = new CdZstdCompressor(17, CompressionZstd3);
|
||||
#endif
|
||||
break;
|
||||
|
||||
case CompressionZlib5:
|
||||
compressor = new CdZlibCompressor(5, compression_id);
|
||||
break;
|
||||
case CompressionZstd3:
|
||||
case CompressionZstd19:
|
||||
case CompressionZstd9:
|
||||
case CompressionZstd7:
|
||||
{
|
||||
int level = 3;
|
||||
switch (compression_id)
|
||||
{
|
||||
case CompressionZstd19:
|
||||
level = 19;
|
||||
case CompressionZstd9:
|
||||
level = 9;
|
||||
case CompressionZstd7:
|
||||
level = 7;
|
||||
}
|
||||
compressor = new CdZstdCompressor(level, CompressionZstd3);
|
||||
} break;
|
||||
case CompressionNone:
|
||||
compressor = nullptr;
|
||||
break;
|
||||
default:
|
||||
return nullptr;
|
||||
}
|
||||
return new CompressAndEncrypt(encryption_key, file, online_kv_store, compressor);
|
||||
}
|
||||
|
||||
IDecryptAndDecompress* CompressEncryptFactory::createDecryptAndDecompress(const std::string& encryption_key, IFile* output_file)
|
||||
{
|
||||
return new DecryptAndDecompress(encryption_key, output_file);
|
||||
}
|
||||
|
||||
|
||||
|
||||
CompressAndEncrypt::CompressAndEncrypt( const std::string& encryption_key, IFile* file, IOnlineKvStore* online_kv_store, ICompressor* compressor)
|
||||
@ -250,8 +255,8 @@ size_t CompressAndEncrypt::read( char* buffer, size_t buffer_size )
|
||||
+ file->getFilename() + " at position " + convert(file_pos)
|
||||
+ " len " + convert(buffer_size) + " for compression and encryption. " + os_last_error_str();
|
||||
Server->Log(msg, LL_ERROR);
|
||||
addSystemEvent("cache_err",
|
||||
"Error reading from file on cache",
|
||||
addSystemEvent("cache_err",
|
||||
"Error reading from file on cache",
|
||||
msg, LL_ERROR);
|
||||
return std::string::npos;
|
||||
}
|
||||
@ -271,8 +276,8 @@ size_t CompressAndEncrypt::read( char* buffer, size_t buffer_size )
|
||||
std::string msg = "Read only " + convert(file_pos) + " of total " +
|
||||
convert(input_file_size) + " from " + file->getFilename();
|
||||
Server->Log(msg, LL_ERROR);
|
||||
addSystemEvent("cache_err",
|
||||
"Error reading from file on cache",
|
||||
addSystemEvent("cache_err",
|
||||
"Error reading from file on cache",
|
||||
msg, LL_ERROR);
|
||||
return std::string::npos;
|
||||
}
|
||||
|
||||
@ -33,6 +33,7 @@ namespace
|
||||
const unsigned int CompressionZstd19 = 3;
|
||||
const unsigned int CompressionZstd9 = 4;
|
||||
const unsigned int CompressionNone = 5;
|
||||
const unsigned int CompressionZstd7 = 6;
|
||||
}
|
||||
|
||||
unsigned int CompressionMethodFromString(const std::string& str);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user