package SevenZip.Archive.Common;
import java.io.IOException;
import java.io.OutputStream;
import Common.CRC;
public class OutStreamWithCRC extends OutputStream {
private OutputStream _stream;
private long _size;
private CRC _crc = new CRC();
private boolean _calculateCrc;
public void write(int b) throws IOException {
throw new IOException("OutStreamWithCRC - write() not implemented");
}
public void write(byte [] data,int off, int size) throws IOException {
if (_stream != null)
_stream.write(data, off,size);
if (_calculateCrc)
_crc.Update(data, off, size);
_size += size;
}
public void setStream(OutputStream stream) { _stream = stream; }
public void reset() { reset(true); }
public void reset(boolean calculateCrc) {
_size = 0;
_calculateCrc = calculateCrc;
_crc.Init();
}
public void releaseStream() throws IOException {
// _stream.Release();
if (_stream != null) _stream.close();
_stream = null;
}
public long getSize() {
return _size;
}
public int getCRC() {
return _crc.GetDigest();
}
public void resetCRC() {
_crc.Init();
}
}