Files
rr3-apk/decompiled-community/sources/okio/DeflaterSink.java
Daniel Elliott c080f0d97f Add Discord community version (64-bit only)
- Added realracing3-community.apk (71.57 MB)
- Removed 32-bit support (armeabi-v7a)
- Only includes arm64-v8a libraries
- Decompiled source code included
- Added README-community.md with analysis
2026-02-18 15:48:36 -08:00

124 lines
3.5 KiB
Java

package okio;
import java.util.zip.Deflater;
/* loaded from: classes5.dex */
public final class DeflaterSink implements Sink {
public boolean closed;
public final Deflater deflater;
public final BufferedSink sink;
public DeflaterSink(BufferedSink bufferedSink, Deflater deflater) {
if (bufferedSink == null) {
throw new IllegalArgumentException("source == null");
}
if (deflater == null) {
throw new IllegalArgumentException("inflater == null");
}
this.sink = bufferedSink;
this.deflater = deflater;
}
@Override // okio.Sink
public void write(Buffer buffer, long j) {
Util.checkOffsetAndCount(buffer.size, 0L, j);
while (j > 0) {
Segment segment = buffer.head;
int min = (int) Math.min(j, segment.limit - segment.pos);
this.deflater.setInput(segment.data, segment.pos, min);
deflate(false);
long j2 = min;
buffer.size -= j2;
int i = segment.pos + min;
segment.pos = i;
if (i == segment.limit) {
buffer.head = segment.pop();
SegmentPool.recycle(segment);
}
j -= j2;
}
}
public final void deflate(boolean z) {
Segment writableSegment;
int deflate;
Buffer buffer = this.sink.buffer();
while (true) {
writableSegment = buffer.writableSegment(1);
if (z) {
Deflater deflater = this.deflater;
byte[] bArr = writableSegment.data;
int i = writableSegment.limit;
deflate = deflater.deflate(bArr, i, 8192 - i, 2);
} else {
Deflater deflater2 = this.deflater;
byte[] bArr2 = writableSegment.data;
int i2 = writableSegment.limit;
deflate = deflater2.deflate(bArr2, i2, 8192 - i2);
}
if (deflate > 0) {
writableSegment.limit += deflate;
buffer.size += deflate;
this.sink.emitCompleteSegments();
} else if (this.deflater.needsInput()) {
break;
}
}
if (writableSegment.pos == writableSegment.limit) {
buffer.head = writableSegment.pop();
SegmentPool.recycle(writableSegment);
}
}
@Override // okio.Sink, java.io.Flushable
public void flush() {
deflate(true);
this.sink.flush();
}
public void finishDeflate() {
this.deflater.finish();
deflate(false);
}
@Override // okio.Sink, java.io.Closeable, java.lang.AutoCloseable
public void close() {
if (this.closed) {
return;
}
try {
finishDeflate();
th = null;
} catch (Throwable th) {
th = th;
}
try {
this.deflater.end();
} catch (Throwable th2) {
if (th == null) {
th = th2;
}
}
try {
this.sink.close();
} catch (Throwable th3) {
if (th == null) {
th = th3;
}
}
this.closed = true;
if (th != null) {
Util.sneakyRethrow(th);
}
}
@Override // okio.Sink
public Timeout timeout() {
return this.sink.timeout();
}
public String toString() {
return "DeflaterSink(" + this.sink + ")";
}
}