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}