public SnappyFramedOutputStream(OutputStream out, boolean writeChecksums, int blockSize, double minCompressionRatio) throws IOException { this.out = SnappyInternalUtils.checkNotNull(out, "out is null"); this.writeChecksums = writeChecksums; SnappyInternalUtils.checkArgument(minCompressionRatio > 0 && minCompressionRatio <= 1.0, "minCompressionRatio %1s must be between (0,1.0].", minCompressionRatio); this.minCompressionRatio = minCompressionRatio; this.blockSize = blockSize; this.buffer = new byte[blockSize]; this.outputBuffer = new byte[compressor.maxCompressedLength(blockSize)]; out.write(SnappyFramed.HEADER_BYTES); SnappyInternalUtils.checkArgument(blockSize > 0 && blockSize <= MAX_BLOCK_SIZE, "blockSize must be in (0, 65536]", blockSize); }
public SnappyFramedOutputStream(OutputStream out, boolean writeChecksums, int blockSize, double minCompressionRatio) throws IOException { this.out = SnappyInternalUtils.checkNotNull(out, "out is null"); this.writeChecksums = writeChecksums; SnappyInternalUtils.checkArgument(minCompressionRatio > 0 && minCompressionRatio <= 1.0, "minCompressionRatio %1s must be between (0,1.0].", minCompressionRatio); this.minCompressionRatio = minCompressionRatio; this.blockSize = blockSize; this.buffer = new byte[blockSize]; this.outputBuffer = new byte[compressor.maxCompressedLength(blockSize)]; out.write(SnappyFramed.HEADER_BYTES); SnappyInternalUtils.checkArgument(blockSize > 0 && blockSize <= MAX_BLOCK_SIZE, "blockSize must be in (0, 65536]", blockSize); }
public static int decompress( final Object inputBase, final long inputAddress, final long inputLimit, final Object outputBase, final long outputAddress, final long outputLimit) { // Read the uncompressed length from the front of the input long input = inputAddress; int[] varInt = readUncompressedLength(inputBase, input, inputLimit); int expectedLength = varInt[0]; input += varInt[1]; SnappyInternalUtils.checkArgument(expectedLength <= (outputLimit - outputAddress), "Uncompressed length %s must be less than %s", expectedLength, (outputLimit - outputAddress)); // Process the entire input int uncompressedSize = uncompressAll( inputBase, input, inputLimit, outputBase, outputAddress, outputLimit); if (!(expectedLength == uncompressedSize)) { throw new MalformedInputException(0, String.format("Recorded length is %s bytes but actual length after decompression is %s bytes ", expectedLength, uncompressedSize)); } return expectedLength; }
public static int decompress( final Object inputBase, final long inputAddress, final long inputLimit, final Object outputBase, final long outputAddress, final long outputLimit) { // Read the uncompressed length from the front of the input long input = inputAddress; int[] varInt = readUncompressedLength(inputBase, input, inputLimit); int expectedLength = varInt[0]; input += varInt[1]; SnappyInternalUtils.checkArgument(expectedLength <= (outputLimit - outputAddress), "Uncompressed length %s must be less than %s", expectedLength, (outputLimit - outputAddress)); // Process the entire input int uncompressedSize = uncompressAll( inputBase, input, inputLimit, outputBase, outputAddress, outputLimit); if (!(expectedLength == uncompressedSize)) { throw new MalformedInputException(0, String.format("Recorded length is %s bytes but actual length after decompression is %s bytes ", expectedLength, uncompressedSize)); } return expectedLength; }