int resultCode = z.deflate(JZlib.Z_FINISH); if (resultCode != JZlib.Z_OK && resultCode != JZlib.Z_STREAM_END) { promise.setFailure(ZlibUtil.deflaterException(z, "compression failure", resultCode));
int deflate(byte[] buf, int off, int nbytes, int flushParam) { if (impl == null) { throw new IllegalStateException(); } // avoid int overflow, check null buf if (off > buf.length || nbytes < 0 || off < 0 || buf.length - off < nbytes) { throw new ArrayIndexOutOfBoundsException(); } long sin = impl.total_in; long sout = impl.total_out; impl.setOutput(buf, off, nbytes); int err = impl.deflate(flushParam); switch (err) { case JZlib.Z_OK: break; case JZlib.Z_STREAM_END: finished = true; break; default: throw new RuntimeException("Error: " + err); } inRead += impl.total_in - sin; return (int) (impl.total_out - sout); } public void end() {
resultCode = z.deflate(JZlib.Z_SYNC_FLUSH); } finally { in.skipBytes(z.next_in_index - oldNextInIndex);
int resultCode = z.deflate(JZlib.Z_FINISH); if (resultCode != JZlib.Z_OK && resultCode != JZlib.Z_STREAM_END) { promise.setFailure(ZlibUtil.deflaterException(z, "compression failure", resultCode));
resultCode = z.deflate(JZlib.Z_SYNC_FLUSH); } finally { in.skipBytes(z.next_in_index - oldNextInIndex);
int resultCode = z.deflate(JZlib.Z_FINISH); if (resultCode != JZlib.Z_OK && resultCode != JZlib.Z_STREAM_END) { promise.setFailure(ZlibUtil.deflaterException(z, "compression failure", resultCode));
resultCode = z.deflate(JZlib.Z_SYNC_FLUSH); } finally { out.skipBytes(z.next_in_index - oldNextInIndex);
resultCode = z.deflate(JZlib.Z_SYNC_FLUSH); } finally { in.skipBytes(z.next_in_index - oldNextInIndex);
@Override public void compress(Buffer buffer) { deflater.setNextIn(buffer.array()); deflater.setNextInIndex(buffer.rpos()); deflater.setAvailIn(buffer.available()); buffer.wpos(buffer.rpos()); do { deflater.setNextOut(tempBuf); deflater.setNextOutIndex(0); deflater.setAvailOut(BUF_SIZE); final int status = deflater.deflate(JZlib.Z_PARTIAL_FLUSH); if (status == JZlib.Z_OK) { buffer.putRawBytes(tempBuf, 0, BUF_SIZE - deflater.getAvailOut()); } else { throw new SSHRuntimeException("compress: deflate returned " + status); } } while (deflater.getAvailOut() == 0); }
protected int deflate(int flush) throws IOException { deflater.setOutput(buffer, 0, buffer.length); int err = deflater.deflate(flush); switch(err) { case JZlib.Z_OK: case JZlib.Z_STREAM_END: break; case JZlib.Z_BUF_ERROR: if(deflater.avail_in<=0 && flush!=JZlib.Z_FINISH){ // flush() without any data break; } default: throw new IOException("failed to deflate"); } int len = deflater.next_out_index; if (len > 0) { out.write(buffer, 0, len); } return err; }
protected int deflate(int flush) throws IOException { deflater.setOutput(buffer, 0, buffer.length); int err = deflater.deflate(flush); switch(err) { case JZlib.Z_OK: case JZlib.Z_STREAM_END: break; case JZlib.Z_BUF_ERROR: if(deflater.avail_in<=0 && flush!=JZlib.Z_FINISH){ // flush() without any data break; } default: throw new IOException("failed to deflate"); } int len = deflater.next_out_index; if (len > 0) { out.write(buffer, 0, len); } return err; }
protected int deflate(int flush) throws IOException { deflater.setOutput(buffer, 0, buffer.length); int err = deflater.deflate(flush); switch(err) { case JZlib.Z_OK: case JZlib.Z_STREAM_END: break; case JZlib.Z_BUF_ERROR: if(deflater.avail_in<=0 && flush!=JZlib.Z_FINISH){ // flush() without any data break; } default: throw new IOException("failed to deflate: error="+err+" avail_out="+deflater.avail_out); } int len = deflater.next_out_index; if (len > 0) { out.write(buffer, 0, len); } return err; }
private void encode(ByteBuf compressed) { try { byte[] out = new byte[(int) Math.ceil(z.next_in.length * 1.001) + 12]; z.next_out = out; z.next_out_index = 0; z.avail_out = out.length; int resultCode = z.deflate(JZlib.Z_SYNC_FLUSH); if (resultCode != JZlib.Z_OK) { throw new CompressionException("compression failure: " + resultCode); } if (z.next_out_index != 0) { compressed.writeBytes(out, 0, z.next_out_index); } } finally { // Deference the external references explicitly to tell the VM that // the allocated byte arrays are temporary so that the call stack // can be utilized. // I'm not sure if the modern VMs do this optimization though. z.next_in = null; z.next_out = null; } }
private void encode(ByteBuf compressed) { try { byte[] out = new byte[(int) Math.ceil(z.next_in.length * 1.001) + 12]; z.next_out = out; z.next_out_index = 0; z.avail_out = out.length; int resultCode = z.deflate(JZlib.Z_SYNC_FLUSH); if (resultCode != JZlib.Z_OK) { throw new CompressionException("compression failure: " + resultCode); } if (z.next_out_index != 0) { compressed.writeBytes(out, 0, z.next_out_index); } } finally { // Deference the external references explicitly to tell the VM that // the allocated byte arrays are temporary so that the call stack // can be utilized. // I'm not sure if the modern VMs do this optimization though. z.next_in = null; z.next_out = null; } }
public int read(byte[] b, int off, int len) throws IOException { if(compress){ deflater.setOutput(b, off, len); while(true){ int datalen = in.read(buf, 0, buf.length); if(datalen == -1) return -1; deflater.setInput(buf, 0, datalen, true); int err = deflater.deflate(flush); if(deflater.next_out_index>0) return deflater.next_out_index; if(err == JZlib.Z_STREAM_END) return 0; if(err == JZlib.Z_STREAM_ERROR || err == JZlib.Z_DATA_ERROR){ throw new ZStreamException("deflating: "+deflater.msg); } } } else{ return iis.read(b, off, len); } }
private void run() { if (internalFinished()) return; while (!internalFinished()) { flater.setOutput(collected, collectedIdx, collected.length - collectedIdx); int err = flater.deflate(flush); switch (err) { case com.jcraft.jzlib.JZlib.Z_STREAM_ERROR: throw RubyZlib.newStreamError(getRuntime(), "stream error: "); default: } if (collectedIdx == flater.next_out_index) break; collectedIdx = flater.next_out_index; if (collected.length == collectedIdx && !internalFinished()) { byte[] tmp = new byte[collected.length * 3]; System.arraycopy(collected, 0, tmp, 0, collected.length); collected = tmp; } } } }
private void run() { if (internalFinished()) return; while (!internalFinished()) { flater.setOutput(collected, collectedIdx, collected.length - collectedIdx); int err = flater.deflate(flush); switch (err) { case com.jcraft.jzlib.JZlib.Z_STREAM_ERROR: throw RubyZlib.newStreamError(getRuntime(), "stream error: "); default: } if (collectedIdx == flater.next_out_index) break; collectedIdx = flater.next_out_index; if (collected.length == collectedIdx && !internalFinished()) { byte[] tmp = new byte[collected.length * 3]; System.arraycopy(collected, 0, tmp, 0, collected.length); collected = tmp; } } } }
private void run() { if (internalFinished()) return; while (!internalFinished()) { flater.setOutput(collected, collectedIdx, collected.length - collectedIdx); int err = flater.deflate(flush); switch (err) { case com.jcraft.jzlib.JZlib.Z_STREAM_ERROR: throw RubyZlib.newStreamError(getRuntime(), "stream error: "); default: } if (collectedIdx == flater.next_out_index) break; collectedIdx = flater.next_out_index; if (collected.length == collectedIdx && !internalFinished()) { byte[] tmp = new byte[collected.length * 3]; System.arraycopy(collected, 0, tmp, 0, collected.length); collected = tmp; } } } }
private void run() { if (internalFinished()) return; while (!internalFinished()) { flater.setOutput(collected, collectedIdx, collected.length - collectedIdx); int err = flater.deflate(flush); switch (err) { case com.jcraft.jzlib.JZlib.Z_STREAM_ERROR: throw RubyZlib.newStreamError(getRuntime(), "stream error: "); default: } if (collectedIdx == flater.next_out_index) break; collectedIdx = flater.next_out_index; if (collected.length == collectedIdx && !internalFinished()) { byte[] tmp = new byte[collected.length * 3]; System.arraycopy(collected, 0, tmp, 0, collected.length); collected = tmp; } } } }
@Override public void compress(Buffer buffer) { deflater.setNextIn(buffer.array()); deflater.setNextInIndex(buffer.rpos()); deflater.setAvailIn(buffer.available()); buffer.wpos(buffer.rpos()); do { deflater.setNextOut(tempBuf); deflater.setNextOutIndex(0); deflater.setAvailOut(BUF_SIZE); final int status = deflater.deflate(JZlib.Z_PARTIAL_FLUSH); if (status == JZlib.Z_OK) { buffer.putRawBytes(tempBuf, 0, BUF_SIZE - deflater.getAvailOut()); } else { throw new SSHRuntimeException("compress: deflate returned " + status); } } while (deflater.getAvailOut() == 0); }