Zcalanie ręczne z Wywołanie_i/o

This commit is contained in:
yanczi 2025-11-20 00:13:09 +01:00
commit e2dc70acc0
10 changed files with 387 additions and 18 deletions

View file

@ -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());