private bool DeflateOneSegment(WorkItem workitem) { ZlibCodec compressor = workitem.compressor; compressor.ResetDeflate(); compressor.NextIn = 0; compressor.AvailableBytesIn = workitem.inputBytesAvailable; compressor.NextOut = 0; compressor.AvailableBytesOut = workitem.compressed.Length; while (true) { compressor.Deflate(FlushType.None); if ((compressor.AvailableBytesIn <= 0) && (compressor.AvailableBytesOut != 0)) { compressor.Deflate(FlushType.Sync); workitem.compressedBytesAvailable = (int)compressor.TotalBytesOut; return(true); } } }
private bool DeflateOneSegment(WorkItem workitem) { ZlibCodec compressor = workitem.compressor; int rc = 0; compressor.ResetDeflate(); compressor.NextIn = 0; compressor.AvailableBytesIn = workitem.inputBytesAvailable; // step 1: deflate the buffer compressor.NextOut = 0; compressor.AvailableBytesOut = workitem.compressed.Length; do { compressor.Deflate(FlushType.None); } while (compressor.AvailableBytesIn > 0 || compressor.AvailableBytesOut == 0); // step 2: flush (sync) rc = compressor.Deflate(FlushType.Sync); workitem.compressedBytesAvailable = (int)compressor.TotalBytesOut; return(true); }