private static int doReadHeader()

in curator-framework/src/main/java/org/apache/curator/framework/imps/GzipCompressionProvider.java [267:295]


    private static int doReadHeader(ByteBuffer gzippedData) throws IOException {
        if (gzippedData.getChar() != GZIP_MAGIC) {
            throw new ZipException("Not in GZip format");
        }
        if (gzippedData.get() != Deflater.DEFLATED) {
            throw new ZipException("Unsupported compression method");
        }
        int flags = gzippedData.get();
        // Skip MTIME, XFL, and OS fields
        skip(gzippedData, Integer.BYTES + Byte.BYTES + Byte.BYTES);
        if ((flags & FEXTRA) != 0) {
            int extraBytes = gzippedData.getChar();
            skip(gzippedData, extraBytes);
        }
        if ((flags & FNAME) != 0) {
            skipZeroTerminatedString(gzippedData);
        }
        if ((flags & FCOMMENT) != 0) {
            skipZeroTerminatedString(gzippedData);
        }
        if ((flags & FHCRC) != 0) {
            CRC32 crc = new CRC32();
            crc.update(gzippedData.array(), 0, gzippedData.position());
            if (gzippedData.getChar() != (char) crc.getValue()) {
                throw new ZipException("Corrupt GZIP header");
            }
        }
        return gzippedData.position();
    }