Ejemplo n.º 1
0
        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);
        }