/** * Uses streaming decompression to inflate {@code deflated}. The input must * either be finished or have a trailing sync flush. */ private EasyBuffer inflate(EasyBuffer deflated) { var deflatedIn = deflated.InputStream(); Inflater inflater = new Inflater(); var inflatedIn = new InflaterInputStream(deflatedIn, inflater); var result = new EasyBuffer(); byte[] buffer = new byte[8192]; while (!inflater.IsNeedingInput || deflated.Size > 0) { int count = inflatedIn.Read(buffer, 0, buffer.Length); if (count > 0) { result.Write(buffer, 0, count); } } return(result); }