MCPcopy Create free account
hub / github.com/SmingHub/Sming / fillTempStream

Method fillTempStream

Sming/Core/Data/StreamTransformer.cpp:33–63  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

31}
32
33void StreamTransformer::fillTempStream(char* buffer, size_t bufSize)
34{
35 size_t room;
36 auto maxChunkSize = std::min(bufSize, blockSize);
37 while((room = tempStream->room()) >= maxChunkSize) {
38 auto chunkSize = sourceStream->readMemoryBlock(buffer, maxChunkSize);
39 if(chunkSize == 0) {
40 break;
41 }
42
43 saveState();
44 size_t outLength = transform(reinterpret_cast<const uint8_t*>(buffer), chunkSize, result.get(), resultSize);
45 if(outLength > room) {
46 restoreState();
47 return;
48 }
49
50 auto written = tempStream->write(result.get(), outLength);
51 (void)written;
52 assert(written == outLength);
53
54 sourceStream->seek(chunkSize);
55 }
56
57 if(sourceStream->isFinished()) {
58 auto outLength = transform(nullptr, 0, result.get(), resultSize);
59 auto written = tempStream->write(result.get(), outLength);
60 (void)written;
61 assert(written == outLength);
62 }
63}
64
65bool StreamTransformer::seek(int len)
66{

Callers

nothing calls this directly

Calls 7

minFunction · 0.85
roomMethod · 0.80
readMemoryBlockMethod · 0.45
getMethod · 0.45
writeMethod · 0.45
seekMethod · 0.45
isFinishedMethod · 0.45

Tested by

no test coverage detected