MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / compress

Method compress

source/core/StarZSTDCompression.cpp:14–38  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

12CompressionStream::~CompressionStream() { ZSTD_freeCStream(m_cStream); }
13
14void CompressionStream::compress(const char* in, size_t inLen, ByteArray& out) {
15 size_t const cOutSize = ZSTD_CStreamOutSize();
16 ZSTD_inBuffer inBuffer = {in, inLen, 0};
17 size_t written = out.size();
18 out.resize(out.size() + cOutSize);
19 bool finished = false;
20 do {
21 ZSTD_outBuffer outBuffer = {out.ptr() + written, min(cOutSize, out.size() - written), 0};
22 size_t ret = ZSTD_compressStream2(m_cStream, &outBuffer, &inBuffer, ZSTD_e_flush);
23 if (ZSTD_isError(ret)) {
24 throw IOException(strf("ZSTD compression error {}", ZSTD_getErrorName(ret)));
25 break;
26 }
27
28 written += outBuffer.pos;
29 if (outBuffer.pos == outBuffer.size) {
30 if (written >= out.size())
31 out.resize(out.size() * 2);
32 continue;
33 }
34
35 finished = ret == 0 && inBuffer.pos == inBuffer.size;
36 } while (!finished);
37 out.resize(written);
38}
39
40void CompressionStream::compress(ByteArray const& in, ByteArray& out) {
41 return compress(in.ptr(), in.size(), out);

Callers 2

writeDataMethod · 0.80
sendPacketsMethod · 0.80

Calls 4

strfFunction · 0.85
sizeMethod · 0.45
resizeMethod · 0.45
ptrMethod · 0.45

Tested by

no test coverage detected