Container to bindata, and back again
Views (1029)
I was recently engaged in a bug where the size of container caused problems. The solution we arrived at was to implement compression of the container. The solution is trivial; but the APIs to get there took me a while to discover, and as I couldn't find any other post on this, I'm sharing it.
How to implement compression/decompression of pack/unpack methods using BinData and ContainerClass.
public container pack() { // Business as usual... container result = [#currentVersion, #currentList]; // Compress ContainerClass containerClass = new ContainerClass(result); binData = new BinData(); binData.setData(containerClass.toBlob()); binData.compressLZ77(12); return binData.getData(); } public boolean unpack(container _compressed) { // Decompress BinData binData = new BinData(); binData.setData(_compressed); binData.decompressLZ77(); container packed = ContainerClass::blob2Container(binData.getData()); // Business as usual... Version version = RunBase::getVersion(packed); switch (version) { case #CurrentVersion: [version, #currentList] = packed; break; default: return false; } return true; }
THIS POST IS PROVIDED AS-IS; AND CONFERS NO RIGHTS.
*This post is locked for comments