public static IEnumerable <WorkItem> ProcessCompressedWorkItems(CompressedWorkItems compressedWorkItems) { using var stream = new MemoryStream(DecompressWorkItems(compressedWorkItems)); foreach (var workItem in ReadWorkItems(stream)) { yield return(workItem); } }
private static byte[] DecompressWorkItems(CompressedWorkItems compressedWorkItems) { var decompressedData = new byte[compressedWorkItems.UncompressedSize]; var decompressedLength = 0; using (var memory = new MemoryStream(compressedWorkItems.Bytes)) { using var inflater = new InflaterInputStream(memory); decompressedLength = inflater.Read(decompressedData, 0, decompressedData.Length); } if (decompressedLength != compressedWorkItems.UncompressedSize) { throw new InvalidDataException("incorrect decompressed data size"); } return(decompressedData); }