G-Earth/Extensions/G-Translator_1.0.2/decompiled/okio/RealBufferedSource.java
Administrator 368b92d87a G-Earth 1.5.4 beta 22 - Initial release
Komplettes G-Earth Paket inkl. JRE, Extensions und Tools.

Extensions:
- G-BuildTools, G-Click Ultimate, G-Loader, G-Manipulate
- G-Presets, G-Translator, G-Trigger, G-itemViewer
- Market Utils, Packet Info Explorer, Plants
- RandomRoomVisitor, RoomLogger, Sanbovir Photo Inspector
- SpyFriends, WallAligner, XabboScripter, xabbo
2026-03-16 09:45:04 +01:00

468 lines
14 KiB
Java

/*
* Decompiled with CFR 0.152.
*/
package okio;
import java.io.EOFException;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import okio.Buffer;
import okio.BufferedSource;
import okio.ByteString;
import okio.Sink;
import okio.Source;
import okio.Timeout;
import okio.Util;
final class RealBufferedSource
implements BufferedSource {
public final Buffer buffer;
public final Source source;
private boolean closed;
public RealBufferedSource(Source source, Buffer buffer) {
if (source == null) {
throw new IllegalArgumentException("source == null");
}
this.buffer = buffer;
this.source = source;
}
public RealBufferedSource(Source source) {
this(source, new Buffer());
}
@Override
public Buffer buffer() {
return this.buffer;
}
@Override
public long read(Buffer sink, long byteCount) throws IOException {
long read;
if (sink == null) {
throw new IllegalArgumentException("sink == null");
}
if (byteCount < 0L) {
throw new IllegalArgumentException("byteCount < 0: " + byteCount);
}
if (this.closed) {
throw new IllegalStateException("closed");
}
if (this.buffer.size == 0L && (read = this.source.read(this.buffer, 2048L)) == -1L) {
return -1L;
}
long toRead = Math.min(byteCount, this.buffer.size);
return this.buffer.read(sink, toRead);
}
@Override
public boolean exhausted() throws IOException {
if (this.closed) {
throw new IllegalStateException("closed");
}
return this.buffer.exhausted() && this.source.read(this.buffer, 2048L) == -1L;
}
@Override
public void require(long byteCount) throws IOException {
if (!this.request(byteCount)) {
throw new EOFException();
}
}
@Override
public boolean request(long byteCount) throws IOException {
if (byteCount < 0L) {
throw new IllegalArgumentException("byteCount < 0: " + byteCount);
}
if (this.closed) {
throw new IllegalStateException("closed");
}
while (this.buffer.size < byteCount) {
if (this.source.read(this.buffer, 2048L) != -1L) continue;
return false;
}
return true;
}
@Override
public byte readByte() throws IOException {
this.require(1L);
return this.buffer.readByte();
}
@Override
public ByteString readByteString() throws IOException {
this.buffer.writeAll(this.source);
return this.buffer.readByteString();
}
@Override
public ByteString readByteString(long byteCount) throws IOException {
this.require(byteCount);
return this.buffer.readByteString(byteCount);
}
@Override
public byte[] readByteArray() throws IOException {
this.buffer.writeAll(this.source);
return this.buffer.readByteArray();
}
@Override
public byte[] readByteArray(long byteCount) throws IOException {
this.require(byteCount);
return this.buffer.readByteArray(byteCount);
}
@Override
public int read(byte[] sink) throws IOException {
return this.read(sink, 0, sink.length);
}
@Override
public void readFully(byte[] sink) throws IOException {
try {
this.require(sink.length);
}
catch (EOFException e) {
int offset = 0;
while (this.buffer.size > 0L) {
int read = this.buffer.read(sink, offset, (int)this.buffer.size);
if (read == -1) {
throw new AssertionError();
}
offset += read;
}
throw e;
}
this.buffer.readFully(sink);
}
@Override
public int read(byte[] sink, int offset, int byteCount) throws IOException {
long read;
Util.checkOffsetAndCount(sink.length, offset, byteCount);
if (this.buffer.size == 0L && (read = this.source.read(this.buffer, 2048L)) == -1L) {
return -1;
}
int toRead = (int)Math.min((long)byteCount, this.buffer.size);
return this.buffer.read(sink, offset, toRead);
}
@Override
public void readFully(Buffer sink, long byteCount) throws IOException {
try {
this.require(byteCount);
}
catch (EOFException e) {
sink.writeAll(this.buffer);
throw e;
}
this.buffer.readFully(sink, byteCount);
}
@Override
public long readAll(Sink sink) throws IOException {
if (sink == null) {
throw new IllegalArgumentException("sink == null");
}
long totalBytesWritten = 0L;
while (this.source.read(this.buffer, 2048L) != -1L) {
long emitByteCount = this.buffer.completeSegmentByteCount();
if (emitByteCount <= 0L) continue;
totalBytesWritten += emitByteCount;
sink.write(this.buffer, emitByteCount);
}
if (this.buffer.size() > 0L) {
totalBytesWritten += this.buffer.size();
sink.write(this.buffer, this.buffer.size());
}
return totalBytesWritten;
}
@Override
public String readUtf8() throws IOException {
this.buffer.writeAll(this.source);
return this.buffer.readUtf8();
}
@Override
public String readUtf8(long byteCount) throws IOException {
this.require(byteCount);
return this.buffer.readUtf8(byteCount);
}
@Override
public String readString(Charset charset) throws IOException {
if (charset == null) {
throw new IllegalArgumentException("charset == null");
}
this.buffer.writeAll(this.source);
return this.buffer.readString(charset);
}
@Override
public String readString(long byteCount, Charset charset) throws IOException {
this.require(byteCount);
if (charset == null) {
throw new IllegalArgumentException("charset == null");
}
return this.buffer.readString(byteCount, charset);
}
@Override
public String readUtf8Line() throws IOException {
long newline = this.indexOf((byte)10);
if (newline == -1L) {
return this.buffer.size != 0L ? this.readUtf8(this.buffer.size) : null;
}
return this.buffer.readUtf8Line(newline);
}
@Override
public String readUtf8LineStrict() throws IOException {
long newline = this.indexOf((byte)10);
if (newline == -1L) {
Buffer data = new Buffer();
this.buffer.copyTo(data, 0L, Math.min(32L, this.buffer.size()));
throw new EOFException("\\n not found: size=" + this.buffer.size() + " content=" + data.readByteString().hex() + "...");
}
return this.buffer.readUtf8Line(newline);
}
@Override
public int readUtf8CodePoint() throws IOException {
this.require(1L);
byte b0 = this.buffer.getByte(0L);
if ((b0 & 0xE0) == 192) {
this.require(2L);
} else if ((b0 & 0xF0) == 224) {
this.require(3L);
} else if ((b0 & 0xF8) == 240) {
this.require(4L);
}
return this.buffer.readUtf8CodePoint();
}
@Override
public short readShort() throws IOException {
this.require(2L);
return this.buffer.readShort();
}
@Override
public short readShortLe() throws IOException {
this.require(2L);
return this.buffer.readShortLe();
}
@Override
public int readInt() throws IOException {
this.require(4L);
return this.buffer.readInt();
}
@Override
public int readIntLe() throws IOException {
this.require(4L);
return this.buffer.readIntLe();
}
@Override
public long readLong() throws IOException {
this.require(8L);
return this.buffer.readLong();
}
@Override
public long readLongLe() throws IOException {
this.require(8L);
return this.buffer.readLongLe();
}
@Override
public long readDecimalLong() throws IOException {
this.require(1L);
int pos = 0;
while (this.request(pos + 1)) {
byte b = this.buffer.getByte(pos);
if (!(b >= 48 && b <= 57 || pos == 0 && b == 45)) {
if (pos != 0) break;
throw new NumberFormatException(String.format("Expected leading [0-9] or '-' character but was %#x", b));
}
++pos;
}
return this.buffer.readDecimalLong();
}
@Override
public long readHexadecimalUnsignedLong() throws IOException {
this.require(1L);
int pos = 0;
while (this.request(pos + 1)) {
byte b = this.buffer.getByte(pos);
if (!(b >= 48 && b <= 57 || b >= 97 && b <= 102 || b >= 65 && b <= 70)) {
if (pos != 0) break;
throw new NumberFormatException(String.format("Expected leading [0-9a-fA-F] character but was %#x", b));
}
++pos;
}
return this.buffer.readHexadecimalUnsignedLong();
}
@Override
public void skip(long byteCount) throws IOException {
if (this.closed) {
throw new IllegalStateException("closed");
}
while (byteCount > 0L) {
if (this.buffer.size == 0L && this.source.read(this.buffer, 2048L) == -1L) {
throw new EOFException();
}
long toSkip = Math.min(byteCount, this.buffer.size());
this.buffer.skip(toSkip);
byteCount -= toSkip;
}
}
@Override
public long indexOf(byte b) throws IOException {
return this.indexOf(b, 0L);
}
@Override
public long indexOf(byte b, long fromIndex) throws IOException {
long index;
if (this.closed) {
throw new IllegalStateException("closed");
}
while (fromIndex >= this.buffer.size) {
if (this.source.read(this.buffer, 2048L) != -1L) continue;
return -1L;
}
while ((index = this.buffer.indexOf(b, fromIndex)) == -1L) {
fromIndex = this.buffer.size;
if (this.source.read(this.buffer, 2048L) != -1L) continue;
return -1L;
}
return index;
}
@Override
public long indexOf(ByteString bytes) throws IOException {
return this.indexOf(bytes, 0L);
}
@Override
public long indexOf(ByteString bytes, long fromIndex) throws IOException {
if (bytes.size() == 0) {
throw new IllegalArgumentException("bytes is empty");
}
while ((fromIndex = this.indexOf(bytes.getByte(0), fromIndex)) != -1L) {
if (this.rangeEquals(fromIndex, bytes)) {
return fromIndex;
}
++fromIndex;
}
return -1L;
}
@Override
public long indexOfElement(ByteString targetBytes) throws IOException {
return this.indexOfElement(targetBytes, 0L);
}
@Override
public long indexOfElement(ByteString targetBytes, long fromIndex) throws IOException {
long index;
if (this.closed) {
throw new IllegalStateException("closed");
}
while (fromIndex >= this.buffer.size) {
if (this.source.read(this.buffer, 2048L) != -1L) continue;
return -1L;
}
while ((index = this.buffer.indexOfElement(targetBytes, fromIndex)) == -1L) {
fromIndex = this.buffer.size;
if (this.source.read(this.buffer, 2048L) != -1L) continue;
return -1L;
}
return index;
}
private boolean rangeEquals(long offset, ByteString bytes) throws IOException {
return this.request(offset + (long)bytes.size()) && this.buffer.rangeEquals(offset, bytes);
}
@Override
public InputStream inputStream() {
return new InputStream(){
@Override
public int read() throws IOException {
long count;
if (RealBufferedSource.this.closed) {
throw new IOException("closed");
}
if (RealBufferedSource.this.buffer.size == 0L && (count = RealBufferedSource.this.source.read(RealBufferedSource.this.buffer, 2048L)) == -1L) {
return -1;
}
return RealBufferedSource.this.buffer.readByte() & 0xFF;
}
@Override
public int read(byte[] data, int offset, int byteCount) throws IOException {
long count;
if (RealBufferedSource.this.closed) {
throw new IOException("closed");
}
Util.checkOffsetAndCount(data.length, offset, byteCount);
if (RealBufferedSource.this.buffer.size == 0L && (count = RealBufferedSource.this.source.read(RealBufferedSource.this.buffer, 2048L)) == -1L) {
return -1;
}
return RealBufferedSource.this.buffer.read(data, offset, byteCount);
}
@Override
public int available() throws IOException {
if (RealBufferedSource.this.closed) {
throw new IOException("closed");
}
return (int)Math.min(RealBufferedSource.this.buffer.size, Integer.MAX_VALUE);
}
@Override
public void close() throws IOException {
RealBufferedSource.this.close();
}
public String toString() {
return RealBufferedSource.this + ".inputStream()";
}
};
}
@Override
public void close() throws IOException {
if (this.closed) {
return;
}
this.closed = true;
this.source.close();
this.buffer.clear();
}
@Override
public Timeout timeout() {
return this.source.timeout();
}
public String toString() {
return "buffer(" + this.source + ")";
}
}