001package org.anarres.lzo.commons;
002
003import java.io.IOException;
004import java.io.InputStream;
005import javax.annotation.Nonnull;
006import org.anarres.lzo.LzoAlgorithm;
007import org.anarres.lzo.LzoDecompressor;
008import org.anarres.lzo.LzoInputStream;
009import org.anarres.lzo.LzoLibrary;
010import org.apache.commons.compress.compressors.CompressorInputStream;
011
012/**
013 *
014 * @author shevek
015 */
016public class LzoCompressorInputStream extends CompressorInputStream {
017
018    private final LzoInputStream in;
019
020    public LzoCompressorInputStream(@Nonnull InputStream in, @Nonnull LzoDecompressor decompressor) {
021        this.in = new LzoInputStream(in, decompressor);
022    }
023
024    public LzoCompressorInputStream(@Nonnull InputStream in, @Nonnull LzoAlgorithm algorithm) {
025        this.in = new LzoInputStream(in, LzoLibrary.getInstance().newDecompressor(algorithm, null));
026    }
027
028    @Override
029    public int read() throws IOException {
030        int b = in.read();
031        count(b < 0 ? -1 : 1);
032        return b;
033    }
034
035}