Mercurial > hg > Members > nobuyasu > tightVNCClient
diff src/ZlibInStream.java @ 4:60a87e277536
indent
author | e085711 |
---|---|
date | Wed, 13 Apr 2011 08:00:53 +0900 |
parents | dc1d008d987b |
children | bdb8d7c7d4d1 |
line wrap: on
line diff
--- a/src/ZlibInStream.java Wed Apr 13 07:48:49 2011 +0900 +++ b/src/ZlibInStream.java Wed Apr 13 08:00:53 2011 +0900 @@ -22,89 +22,95 @@ public class ZlibInStream extends InStream { - static final int defaultBufSize = 16384; + static final int defaultBufSize = 16384; - public ZlibInStream(int bufSize_) { - bufSize = bufSize_; - b = new byte[bufSize]; - ptr = end = ptrOffset = 0; - inflater = new java.util.zip.Inflater(); - } + public ZlibInStream(int bufSize_) { + bufSize = bufSize_; + b = new byte[bufSize]; + ptr = end = ptrOffset = 0; + inflater = new java.util.zip.Inflater(); + } - public ZlibInStream() { this(defaultBufSize); } + public ZlibInStream() { + this(defaultBufSize); + } - public void setUnderlying(InStream is, int bytesIn_) { - underlying = is; - bytesIn = bytesIn_; - ptr = end = 0; - } - - public void reset() throws Exception { - ptr = end = 0; - if (underlying == null) return; + public void setUnderlying(InStream is, int bytesIn_) { + underlying = is; + bytesIn = bytesIn_; + ptr = end = 0; + } - while (bytesIn > 0) { - decompress(); - end = 0; // throw away any data - } - underlying = null; - } + public void reset() throws Exception { + ptr = end = 0; + if (underlying == null) + return; - public int pos() { return ptrOffset + ptr; } + while (bytesIn > 0) { + decompress(); + end = 0; // throw away any data + } + underlying = null; + } - protected int overrun(int itemSize, int nItems) throws Exception { - if (itemSize > bufSize) - throw new Exception("ZlibInStream overrun: max itemSize exceeded"); - if (underlying == null) - throw new Exception("ZlibInStream overrun: no underlying stream"); + public int pos() { + return ptrOffset + ptr; + } - if (end - ptr != 0) - System.arraycopy(b, ptr, b, 0, end - ptr); + protected int overrun(int itemSize, int nItems) throws Exception { + if (itemSize > bufSize) + throw new Exception("ZlibInStream overrun: max itemSize exceeded"); + if (underlying == null) + throw new Exception("ZlibInStream overrun: no underlying stream"); - ptrOffset += ptr; - end -= ptr; - ptr = 0; + if (end - ptr != 0) + System.arraycopy(b, ptr, b, 0, end - ptr); - while (end < itemSize) { - decompress(); - } + ptrOffset += ptr; + end -= ptr; + ptr = 0; - if (itemSize * nItems > end) - nItems = end / itemSize; - - return nItems; - } + while (end < itemSize) { + decompress(); + } - // decompress() calls the decompressor once. Note that this won't - // necessarily generate any output data - it may just consume some input - // data. Returns false if wait is false and we would block on the underlying - // stream. + if (itemSize * nItems > end) + nItems = end / itemSize; - private void decompress() throws Exception { - try { - underlying.check(1); - int avail_in = underlying.getend() - underlying.getptr(); - if (avail_in > bytesIn) - avail_in = bytesIn; + return nItems; + } + + // decompress() calls the decompressor once. Note that this won't + // necessarily generate any output data - it may just consume some input + // data. Returns false if wait is false and we would block on the underlying + // stream. - if (inflater.needsInput()) { - inflater.setInput(underlying.getbuf(), underlying.getptr(), avail_in); - } + private void decompress() throws Exception { + try { + underlying.check(1); + int avail_in = underlying.getend() - underlying.getptr(); + if (avail_in > bytesIn) + avail_in = bytesIn; + + if (inflater.needsInput()) { + inflater.setInput(underlying.getbuf(), underlying.getptr(), + avail_in); + } - int n = inflater.inflate(b, end, bufSize - end); - end += n; - if (inflater.needsInput()) { - bytesIn -= avail_in; - underlying.setptr(underlying.getptr() + avail_in); - } - } catch (java.util.zip.DataFormatException e) { - throw new Exception("ZlibInStream: inflate failed"); - } - } + int n = inflater.inflate(b, end, bufSize - end); + end += n; + if (inflater.needsInput()) { + bytesIn -= avail_in; + underlying.setptr(underlying.getptr() + avail_in); + } + } catch (java.util.zip.DataFormatException e) { + throw new Exception("ZlibInStream: inflate failed"); + } + } - private InStream underlying; - private int bufSize; - private int ptrOffset; - private java.util.zip.Inflater inflater; - private int bytesIn; + private InStream underlying; + private int bufSize; + private int ptrOffset; + private java.util.zip.Inflater inflater; + private int bytesIn; }