Decompressing Frames
For restoring payload bytes from a compressed Rogue stream, Rogue provides
rogue.utilities.StreamUnZip. It consumes frames produced by
StreamZip or another compatible bzip2-compressed source, inflates the
payload, and forwards a new frame downstream while preserving frame metadata.
Use StreamUnZip on the receive or replay side of a pipeline that previously
inserted StreamZip.
Decompression Pipeline
A common decompression chain reverses the compression workflow:
StreamReaderreplays compressed frames from disk.StreamUnZipinflates each payload.Prbsverifies integrity and reports receive and error counts.
Python Example
import rogue.utilities as ru
import rogue.utilities.fileio as ruf
# Replay compressed frames from file.
reader = ruf.StreamReader()
# Decompression stage and downstream checker.
decomp = ru.StreamUnZip()
prbs = ru.Prbs()
# Pipeline: file replay -> decompressor -> PRBS checker.
reader >> decomp >> prbs
# Run replay and wait for completion.
reader.open('myFile.dat.1')
reader.closeWait()
# Summarize checker statistics.
print(f'Received {prbs.getRxCount()} frames')
print(f'Received {prbs.getRxErrors()} errors')
C++ Example
#include <rogue/utilities/fileio/StreamReader.h>
#include <rogue/utilities/Prbs.h>
#include <rogue/utilities/StreamUnZip.h>
namespace ru = rogue::utilities;
namespace ruf = rogue::utilities::fileio;
int main() {
// Replay source, decompressor, and checker endpoints.
auto reader = ruf::StreamReader::create();
auto decomp = ru::StreamUnZip::create();
auto prbs = ru::Prbs::create();
// Pipeline: file replay -> decompressor -> PRBS checker.
*reader >> decomp >> prbs;
// Run replay and wait for completion.
reader->open("myFile.dat.1");
reader->closeWait();
// Summarize checker statistics.
printf("Received %u frames\n", prbs->getRxCount());
printf("Received %u errors\n", prbs->getRxErrors());
return 0;
}
Threading And Lifecycle
StreamUnZip does not create an internal worker thread. Decompression runs
inside acceptFrame() in the caller thread, and the implementation locks the
input frame while reading payload bytes.
Operational Notes
Output frame allocation starts from the compressed payload size and grows if needed.
Frame metadata is preserved across the decompression step.
The decompressor should match a stream path that actually contains compressed payloads.
API Reference
Python: StreamUnZip
C++: StreamUnZip