Files
rr3-apk/decompiled/sources/okio/Segment.java
Daniel Elliott f9d20bb3fc Add decompiled APK source code (JADX)
- 28,932 files
- Full Java source code
- Smali files
- Resources

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-18 14:52:23 -08:00

107 lines
2.9 KiB
Java

package okio;
/* loaded from: classes5.dex */
public final class Segment {
public final byte[] data;
public int limit;
public Segment next;
public boolean owner;
public int pos;
public Segment prev;
public boolean shared;
public Segment() {
this.data = new byte[8192];
this.owner = true;
this.shared = false;
}
public Segment(byte[] bArr, int i, int i2, boolean z, boolean z2) {
this.data = bArr;
this.pos = i;
this.limit = i2;
this.shared = z;
this.owner = z2;
}
public final Segment sharedCopy() {
this.shared = true;
return new Segment(this.data, this.pos, this.limit, true, false);
}
public final Segment pop() {
Segment segment = this.next;
Segment segment2 = segment != this ? segment : null;
Segment segment3 = this.prev;
segment3.next = segment;
this.next.prev = segment3;
this.next = null;
this.prev = null;
return segment2;
}
public final Segment push(Segment segment) {
segment.prev = this;
segment.next = this.next;
this.next.prev = segment;
this.next = segment;
return segment;
}
public final Segment split(int i) {
Segment take;
if (i <= 0 || i > this.limit - this.pos) {
throw new IllegalArgumentException();
}
if (i >= 1024) {
take = sharedCopy();
} else {
take = SegmentPool.take();
System.arraycopy(this.data, this.pos, take.data, 0, i);
}
take.limit = take.pos + i;
this.pos += i;
this.prev.push(take);
return take;
}
public final void compact() {
Segment segment = this.prev;
if (segment == this) {
throw new IllegalStateException();
}
if (segment.owner) {
int i = this.limit - this.pos;
if (i > (8192 - segment.limit) + (segment.shared ? 0 : segment.pos)) {
return;
}
writeTo(segment, i);
pop();
SegmentPool.recycle(this);
}
}
public final void writeTo(Segment segment, int i) {
if (!segment.owner) {
throw new IllegalArgumentException();
}
int i2 = segment.limit;
if (i2 + i > 8192) {
if (segment.shared) {
throw new IllegalArgumentException();
}
int i3 = segment.pos;
if ((i2 + i) - i3 > 8192) {
throw new IllegalArgumentException();
}
byte[] bArr = segment.data;
System.arraycopy(bArr, i3, bArr, 0, i2 - i3);
segment.limit -= segment.pos;
segment.pos = 0;
}
System.arraycopy(this.data, this.pos, segment.data, segment.limit, i);
segment.limit += i;
this.pos += i;
}
}