Clean up ArchiveInputStream.
This commit is contained in:
parent
d135355156
commit
d4c56d906d
|
@ -357,23 +357,18 @@ public class ArchiveInputStream extends InputStream {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int read(@NonNull final byte[] buffer, final int offset, final int length) {
|
public int read(@NonNull final byte[] buffer, final int offset, final int length) {
|
||||||
int maxSize = currentSource.length - bytesReadFromCurrentSource;
|
final int size = rawRead(buffer, offset, length);
|
||||||
int size = length <= maxSize ? length : maxSize;
|
if (length > size && startNextFile() != null) {
|
||||||
System.arraycopy(currentSource, bytesReadFromCurrentSource, buffer, offset, size);
|
return size + rawRead(buffer, offset + size, length - size);
|
||||||
bytesReadFromCurrentSource += size;
|
}
|
||||||
if (length > size) {
|
|
||||||
if (startNextFile() == null) {
|
|
||||||
bytesRead += size;
|
|
||||||
crc32.update(buffer, offset, size);
|
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
maxSize = currentSource.length;
|
private int rawRead(@NonNull final byte[] buffer, final int offset, final int length) {
|
||||||
final int nextSize = length - size <= maxSize ? length - size : maxSize;
|
final int maxSize = currentSource.length - bytesReadFromCurrentSource;
|
||||||
System.arraycopy(currentSource, 0, buffer, offset + size, nextSize);
|
final int size = length <= maxSize ? length : maxSize;
|
||||||
bytesReadFromCurrentSource += nextSize;
|
System.arraycopy(currentSource, bytesReadFromCurrentSource, buffer, offset, size);
|
||||||
size += nextSize;
|
bytesReadFromCurrentSource += size;
|
||||||
}
|
|
||||||
bytesRead += size;
|
bytesRead += size;
|
||||||
crc32.update(buffer, offset, size);
|
crc32.update(buffer, offset, size);
|
||||||
return size;
|
return size;
|
||||||
|
@ -395,7 +390,7 @@ public class ArchiveInputStream extends InputStream {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void reset() throws IOException {
|
public void reset() {
|
||||||
currentSource = markedSource;
|
currentSource = markedSource;
|
||||||
bytesRead = bytesReadFromCurrentSource = bytesReadFromMarkedSource;
|
bytesRead = bytesReadFromCurrentSource = bytesReadFromMarkedSource;
|
||||||
|
|
||||||
|
@ -479,12 +474,8 @@ public class ArchiveInputStream extends InputStream {
|
||||||
else if ((type & DfuBaseService.TYPE_APPLICATION) > 0)
|
else if ((type & DfuBaseService.TYPE_APPLICATION) > 0)
|
||||||
currentSource = applicationBytes;
|
currentSource = applicationBytes;
|
||||||
bytesReadFromCurrentSource = 0;
|
bytesReadFromCurrentSource = 0;
|
||||||
try {
|
|
||||||
mark(0);
|
mark(0);
|
||||||
reset();
|
reset();
|
||||||
} catch (final IOException e) {
|
|
||||||
// not available
|
|
||||||
}
|
|
||||||
return this.type;
|
return this.type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue