Zcalanie ręczne z Wywołanie_i/o
This commit is contained in:
commit
e2dc70acc0
10 changed files with 387 additions and 18 deletions
|
|
@ -1,7 +1,6 @@
|
|||
#include "ChunkManager.h"
|
||||
#include "CompressingManager.h"
|
||||
|
||||
ChunkManager::ChunkManager(EncryptionManager& em)
|
||||
:eman(em)
|
||||
CompressingManager::CompressingManager()
|
||||
{ }
|
||||
|
||||
ChunkManager::~ChunkManager()
|
||||
|
|
@ -37,17 +36,14 @@ std::vector<char> ChunkManager::chunked(const std::vector<char>& raw, const bool
|
|||
|
||||
std::vector<char> outChunk;
|
||||
|
||||
// Przetwórz chunki i przetwórz
|
||||
if (compress)
|
||||
{
|
||||
// Zaszyfruj i skompresuj lub tylko skompresuj
|
||||
outChunk = encrypt ? eman.encrypt(cman.compress(chunk)) : cman.compress(chunk);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Zaszyfruj lub skopiuj
|
||||
outChunk = encrypt ? eman.encrypt(chunk) : std::move(chunk);
|
||||
}
|
||||
// Buffor wyjœciowy nadpisany skompresowanymi danymi
|
||||
std::vector<char> zipChunk(maxZipChunkSize);
|
||||
|
||||
// Kompresja
|
||||
int zipSize = LZ4_compress_default(chunk.data(), zipChunk.data(), chunkSize, maxZipChunkSize);
|
||||
|
||||
// Zmiana rozmiaru do faktycznego rozmiaru po kompresji
|
||||
zipChunk.resize(zipSize);
|
||||
|
||||
uint32_t chs = chunk.size();
|
||||
uint32_t zch = outChunk.size();
|
||||
|
|
@ -100,11 +96,19 @@ std::vector<char> ChunkManager::dechunked(const std::vector<char>& zip, const bo
|
|||
std::memcpy(inChunk.data(), zip.data() + offset, chunkZipSize);
|
||||
offset += chunkZipSize;
|
||||
|
||||
// Jeœli flaga encrypt jest aktywna najpierw zdeszyfruj blok
|
||||
std::vector<char> zipChunk = encrypt ? eman.decrypt(inChunk) : std::move(inChunk);
|
||||
|
||||
// Zdeklarój pusty chunk
|
||||
std::vector<char> chunk = compress ? cman.decompress(zipChunk, chunkSize) : std::move(zipChunk);
|
||||
std::vector<char> chunk(chunkSize);
|
||||
|
||||
// Dekompresja chunka
|
||||
int sizeData = LZ4_decompress_safe(zipChunk.data(), chunk.data(), static_cast<int>(chunkZipSize), static_cast<int>(chunkSize));
|
||||
|
||||
if (sizeData < 0)
|
||||
{
|
||||
throw std::runtime_error("LZ4 Decompressing Error");
|
||||
}
|
||||
|
||||
// Dostosowanie rozmiaru vectora po skompresowaniu
|
||||
chunk.resize(sizeData);
|
||||
|
||||
// Scal chunki
|
||||
chunksString.insert(chunksString.end(), chunk.begin(), chunk.end());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue