Wywołanie_i/o #8
3 changed files with 32 additions and 21 deletions
|
|
@ -243,32 +243,40 @@ std::vector<FilesTable> CreateCargo::ComputingHeadFiles()
|
||||||
size_t size = f.tellg();
|
size_t size = f.tellg();
|
||||||
f.seekg(0, std::ios::beg);
|
f.seekg(0, std::ios::beg);
|
||||||
|
|
||||||
//Wczytanie pliku do pamiêci
|
if (size > MAX_FILE_SIZE)
|
||||||
std::vector<char> buffer(size);
|
{
|
||||||
f.read(buffer.data(), size);
|
std::cerr << path << " is too large. It exceeds 2GB!" << std::endl;
|
||||||
f.close();
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//Wczytanie pliku do pamiêci
|
||||||
|
std::vector<char> buffer(size);
|
||||||
|
f.read(buffer.data(), size);
|
||||||
|
f.close();
|
||||||
|
|
||||||
//Tworzenie hashu CRC
|
//Tworzenie hashu CRC
|
||||||
const uint64_t crc = XXH64(buffer.data(), buffer.size(), VERSION);
|
const uint64_t crc = XXH64(buffer.data(), buffer.size(), VERSION);
|
||||||
|
|
||||||
//Kompresjia
|
//Kompresjia
|
||||||
std::vector<char> pakBuffer;
|
std::vector<char> pakBuffer;
|
||||||
computingBytes(file.parameter, buffer, pakBuffer);
|
computingBytes(file.parameter, buffer, pakBuffer);
|
||||||
|
|
||||||
FilesTable ft;
|
FilesTable ft;
|
||||||
ft.nameFile = path;
|
ft.nameFile = path;
|
||||||
ft.nameLen = path.length();
|
ft.nameLen = path.length();
|
||||||
ft.hashName = fnv64(path);
|
ft.hashName = fnv64(path);
|
||||||
ft.offset = offset;
|
ft.offset = offset;
|
||||||
ft.size = pakBuffer.size();
|
ft.size = pakBuffer.size();
|
||||||
ft.flag = file.parameter;
|
ft.flag = file.parameter;
|
||||||
ft.crc = crc;
|
ft.crc = crc;
|
||||||
|
|
||||||
cargo.write(reinterpret_cast<const char*>(pakBuffer.data()), pakBuffer.size());
|
cargo.write(reinterpret_cast<const char*>(pakBuffer.data()), pakBuffer.size());
|
||||||
|
|
||||||
filesTable.push_back(ft);
|
filesTable.push_back(ft);
|
||||||
offset += pakBuffer.size();
|
offset += pakBuffer.size();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return filesTable;
|
return filesTable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -87,6 +87,9 @@ private:
|
||||||
std::ofstream cargo;
|
std::ofstream cargo;
|
||||||
uint64_t offset;
|
uint64_t offset;
|
||||||
|
|
||||||
|
// Progress
|
||||||
|
std::atomic<uint64_t> progress;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Tworzenie listy plików do spakowania
|
// Tworzenie listy plików do spakowania
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ struct FilesTable
|
||||||
std::string nameFile;
|
std::string nameFile;
|
||||||
uint64_t hashName;
|
uint64_t hashName;
|
||||||
uint64_t offset;
|
uint64_t offset;
|
||||||
uint32_t size;
|
uint64_t size;
|
||||||
uint64_t crc;
|
uint64_t crc;
|
||||||
int16_t flag;
|
int16_t flag;
|
||||||
};
|
};
|
||||||
Loading…
Add table
Add a link
Reference in a new issue