diff options
Diffstat (limited to 'src/eu/siacs/conversations/utils/zlib')
-rw-r--r-- | src/eu/siacs/conversations/utils/zlib/ZLibInputStream.java | 72 | ||||
-rw-r--r-- | src/eu/siacs/conversations/utils/zlib/ZLibOutputStream.java | 135 |
2 files changed, 110 insertions, 97 deletions
diff --git a/src/eu/siacs/conversations/utils/zlib/ZLibInputStream.java b/src/eu/siacs/conversations/utils/zlib/ZLibInputStream.java index 2eebf6f4c..b777c10c8 100644 --- a/src/eu/siacs/conversations/utils/zlib/ZLibInputStream.java +++ b/src/eu/siacs/conversations/utils/zlib/ZLibInputStream.java @@ -12,41 +12,43 @@ import java.util.zip.InflaterInputStream; */ public class ZLibInputStream extends InflaterInputStream { - /** - * Construct a ZLibInputStream, reading data from the underlying stream. - * - * @param is The {@code InputStream} to read data from. - * @throws IOException If an {@code IOException} occurs. - */ - public ZLibInputStream(InputStream is) throws IOException { - super(is, new Inflater(), 512); - } + /** + * Construct a ZLibInputStream, reading data from the underlying stream. + * + * @param is + * The {@code InputStream} to read data from. + * @throws IOException + * If an {@code IOException} occurs. + */ + public ZLibInputStream(InputStream is) throws IOException { + super(is, new Inflater(), 512); + } - /** - * Provide a more InputStream compatible version of available. - * A return value of 1 means that it is likly to read one byte without - * blocking, 0 means that the system is known to block for more input. - * - * @return 0 if no data is available, 1 otherwise - * @throws IOException - */ - @Override - public int available() throws IOException { - /* This is one of the funny code blocks. - * InflaterInputStream.available violates the contract of - * InputStream.available, which breaks kXML2. - * - * I'm not sure who's to blame, oracle/sun for a broken api or the - * google guys for mixing a sun bug with a xml reader that can't handle - * it.... - * - * Anyway, this simple if breaks suns distorted reality, but helps - * to use the api as intended. - */ - if (inf.needsInput()) { - return 0; - } - return super.available(); - } + /** + * Provide a more InputStream compatible version of available. A return + * value of 1 means that it is likly to read one byte without blocking, 0 + * means that the system is known to block for more input. + * + * @return 0 if no data is available, 1 otherwise + * @throws IOException + */ + @Override + public int available() throws IOException { + /* + * This is one of the funny code blocks. InflaterInputStream.available + * violates the contract of InputStream.available, which breaks kXML2. + * + * I'm not sure who's to blame, oracle/sun for a broken api or the + * google guys for mixing a sun bug with a xml reader that can't handle + * it.... + * + * Anyway, this simple if breaks suns distorted reality, but helps to + * use the api as intended. + */ + if (inf.needsInput()) { + return 0; + } + return super.available(); + } } diff --git a/src/eu/siacs/conversations/utils/zlib/ZLibOutputStream.java b/src/eu/siacs/conversations/utils/zlib/ZLibOutputStream.java index cc64a5e6c..8b3f5e681 100644 --- a/src/eu/siacs/conversations/utils/zlib/ZLibOutputStream.java +++ b/src/eu/siacs/conversations/utils/zlib/ZLibOutputStream.java @@ -9,76 +9,87 @@ import java.util.zip.Deflater; import java.util.zip.DeflaterOutputStream; /** - * <p>Android 2.2 includes Java7 FLUSH_SYNC option, which will be used by this + * <p> + * Android 2.2 includes Java7 FLUSH_SYNC option, which will be used by this * Implementation, preferable via reflection. The @hide was remove in API level - * 19. This class might thus go away in the future.</p> - * <p>Please use {@link ZLibOutputStream#SUPPORTED} to check for flush - * compatibility.</p> + * 19. This class might thus go away in the future. + * </p> + * <p> + * Please use {@link ZLibOutputStream#SUPPORTED} to check for flush + * compatibility. + * </p> */ public class ZLibOutputStream extends DeflaterOutputStream { - /** - * The reflection based flush method. - */ + /** + * The reflection based flush method. + */ - private final static Method method; - /** - * SUPPORTED is true if a flush compatible method exists. - */ - public final static boolean SUPPORTED; + private final static Method method; + /** + * SUPPORTED is true if a flush compatible method exists. + */ + public final static boolean SUPPORTED; - /** - * Static block to initialize {@link #SUPPORTED} and {@link #method}. - */ - static { - Method m = null; - try { - m = Deflater.class.getMethod("deflate", byte[].class, int.class, int.class, int.class); - } catch (SecurityException e) { - } catch (NoSuchMethodException e) { - } - method = m; - SUPPORTED = (method != null); - } + /** + * Static block to initialize {@link #SUPPORTED} and {@link #method}. + */ + static { + Method m = null; + try { + m = Deflater.class.getMethod("deflate", byte[].class, int.class, + int.class, int.class); + } catch (SecurityException e) { + } catch (NoSuchMethodException e) { + } + method = m; + SUPPORTED = (method != null); + } - /** - * Create a new ZLib compatible output stream wrapping the given low level - * stream. ZLib compatiblity means we will send a zlib header. - * @param os OutputStream The underlying stream. - * @throws IOException In case of a lowlevel transfer problem. - * @throws NoSuchAlgorithmException In case of a {@link Deflater} error. - */ - public ZLibOutputStream(OutputStream os) throws IOException, - NoSuchAlgorithmException { - super(os, new Deflater(Deflater.BEST_COMPRESSION)); - } + /** + * Create a new ZLib compatible output stream wrapping the given low level + * stream. ZLib compatiblity means we will send a zlib header. + * + * @param os + * OutputStream The underlying stream. + * @throws IOException + * In case of a lowlevel transfer problem. + * @throws NoSuchAlgorithmException + * In case of a {@link Deflater} error. + */ + public ZLibOutputStream(OutputStream os) throws IOException, + NoSuchAlgorithmException { + super(os, new Deflater(Deflater.BEST_COMPRESSION)); + } - /** - * Flush the given stream, preferring Java7 FLUSH_SYNC if available. - * @throws IOException In case of a lowlevel exception. - */ - @Override - public void flush() throws IOException { - if (!SUPPORTED) { - super.flush(); - return; - } - try { - int count = 0; - do { - count = (Integer) method.invoke(def, buf, 0, buf.length, 3); - if (count > 0) { - out.write(buf, 0, count); + /** + * Flush the given stream, preferring Java7 FLUSH_SYNC if available. + * + * @throws IOException + * In case of a lowlevel exception. + */ + @Override + public void flush() throws IOException { + if (!SUPPORTED) { + super.flush(); + return; + } + try { + int count = 0; + do { + count = (Integer) method.invoke(def, buf, 0, buf.length, 3); + if (count > 0) { + out.write(buf, 0, count); + } + } while (count > 0); + } catch (IllegalArgumentException e) { + throw new IOException("Can't flush"); + } catch (IllegalAccessException e) { + throw new IOException("Can't flush"); + } catch (InvocationTargetException e) { + throw new IOException("Can't flush"); } - } while (count > 0); - } catch (IllegalArgumentException e) { - throw new IOException("Can't flush"); - } catch (IllegalAccessException e) { - throw new IOException("Can't flush"); - } catch (InvocationTargetException e) { - throw new IOException("Can't flush"); - } - super.flush(); - } + super.flush(); + } } |