MCPcopy Create free account
hub / github.com/apache/orc / writeData

Method writeData

c++/src/Compression.cc:127–144  ·  view source on GitHub ↗

write the data content into outputBuffer

Source from the content-addressed store, hash-verified

125
126 // write the data content into outputBuffer
127 void CompressionStreamBase::writeData(const unsigned char* data, int size) {
128 int offset = 0;
129 while (offset < size) {
130 if (outputPosition == outputSize) {
131 if (!BufferedOutputStream::Next(reinterpret_cast<void**>(&outputBuffer), &outputSize)) {
132 throw CompressionError("Failed to get next output buffer from output stream.");
133 }
134 outputPosition = 0;
135 } else if (outputPosition > outputSize) {
136 // for safety this will unlikely happen
137 throw CompressionError("Write to an out-of-bound place during compression!");
138 }
139 int currentSize = std::min(outputSize - outputPosition, size - offset);
140 memcpy(outputBuffer + outputPosition, data + offset, static_cast<size_t>(currentSize));
141 offset += currentSize;
142 outputPosition += currentSize;
143 }
144 }
145
146 void CompressionStreamBase::ensureHeader() {
147 // adjust 3 bytes for the compression header

Callers

nothing calls this directly

Calls 1

CompressionErrorClass · 0.85

Tested by

no test coverage detected