package org.j7zip.SevenZip.Compression.Copy;
import org.j7zip.SevenZip.HRESULT;
import org.j7zip.SevenZip.ICompressCoder;
import org.j7zip.SevenZip.ICompressProgressInfo;
public class Decoder implements ICompressCoder {
static final int kBufferSize = 1 << 17;
public int Code(
java.io.InputStream inStream, // , ISequentialInStream
java.io.OutputStream outStream, // ISequentialOutStream
long outSize, ICompressProgressInfo progress) throws java.io.IOException {
byte [] _buffer = new byte[kBufferSize];
long TotalSize = 0;
for (;;) {
int realProcessedSize;
int size = kBufferSize;
if (outSize != -1) // NULL
if (size > (outSize - TotalSize))
size = (int)(outSize - TotalSize);
realProcessedSize = inStream.read(_buffer, 0,size);
if(realProcessedSize == -1) // EOF
break;
outStream.write(_buffer,0,realProcessedSize);
TotalSize += realProcessedSize;
if (progress != null) {
int res = progress.SetRatioInfo(TotalSize, TotalSize);
if (res != HRESULT.S_OK) return res;
}
}
return HRESULT.S_OK;
}
}