Rabbit-R1/android (non root)/smali/smali_classes3/com/google/common/io/ReaderInputStream.smali
2024-05-21 17:08:36 -04:00

571 lines
14 KiB
Smali

.class final Lcom/google/common/io/ReaderInputStream;
.super Ljava/io/InputStream;
.source "ReaderInputStream.java"
# annotations
.annotation runtime Lcom/google/common/io/ElementTypesAreNonnullByDefault;
.end annotation
# instance fields
.field private byteBuffer:Ljava/nio/ByteBuffer;
.field private charBuffer:Ljava/nio/CharBuffer;
.field private doneFlushing:Z
.field private draining:Z
.field private final encoder:Ljava/nio/charset/CharsetEncoder;
.field private endOfInput:Z
.field private final reader:Ljava/io/Reader;
.field private final singleByte:[B
# direct methods
.method constructor <init>(Ljava/io/Reader;Ljava/nio/charset/Charset;I)V
.locals 1
.line 86
invoke-virtual {p2}, Ljava/nio/charset/Charset;->newEncoder()Ljava/nio/charset/CharsetEncoder;
move-result-object p2
sget-object v0, Ljava/nio/charset/CodingErrorAction;->REPLACE:Ljava/nio/charset/CodingErrorAction;
.line 87
invoke-virtual {p2, v0}, Ljava/nio/charset/CharsetEncoder;->onMalformedInput(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetEncoder;
move-result-object p2
sget-object v0, Ljava/nio/charset/CodingErrorAction;->REPLACE:Ljava/nio/charset/CodingErrorAction;
.line 88
invoke-virtual {p2, v0}, Ljava/nio/charset/CharsetEncoder;->onUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetEncoder;
move-result-object p2
.line 83
invoke-direct {p0, p1, p2, p3}, Lcom/google/common/io/ReaderInputStream;-><init>(Ljava/io/Reader;Ljava/nio/charset/CharsetEncoder;I)V
return-void
.end method
.method constructor <init>(Ljava/io/Reader;Ljava/nio/charset/CharsetEncoder;I)V
.locals 2
.line 101
invoke-direct {p0}, Ljava/io/InputStream;-><init>()V
const/4 v0, 0x1
new-array v1, v0, [B
iput-object v1, p0, Lcom/google/common/io/ReaderInputStream;->singleByte:[B
.line 102
invoke-static {p1}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p1
check-cast p1, Ljava/io/Reader;
iput-object p1, p0, Lcom/google/common/io/ReaderInputStream;->reader:Ljava/io/Reader;
.line 103
invoke-static {p2}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p1
check-cast p1, Ljava/nio/charset/CharsetEncoder;
iput-object p1, p0, Lcom/google/common/io/ReaderInputStream;->encoder:Ljava/nio/charset/CharsetEncoder;
if-lez p3, :cond_0
goto :goto_0
:cond_0
const/4 v0, 0x0
:goto_0
const-string p1, "bufferSize must be positive: %s"
.line 104
invoke-static {v0, p1, p3}, Lcom/google/common/base/Preconditions;->checkArgument(ZLjava/lang/String;I)V
.line 105
invoke-virtual {p2}, Ljava/nio/charset/CharsetEncoder;->reset()Ljava/nio/charset/CharsetEncoder;
.line 107
invoke-static {p3}, Ljava/nio/CharBuffer;->allocate(I)Ljava/nio/CharBuffer;
move-result-object p1
iput-object p1, p0, Lcom/google/common/io/ReaderInputStream;->charBuffer:Ljava/nio/CharBuffer;
.line 108
invoke-static {p1}, Lcom/google/common/io/Java8Compatibility;->flip(Ljava/nio/Buffer;)V
.line 110
invoke-static {p3}, Ljava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer;
move-result-object p1
iput-object p1, p0, Lcom/google/common/io/ReaderInputStream;->byteBuffer:Ljava/nio/ByteBuffer;
return-void
.end method
.method private static availableCapacity(Ljava/nio/Buffer;)I
.locals 1
.line 230
invoke-virtual {p0}, Ljava/nio/Buffer;->capacity()I
move-result v0
invoke-virtual {p0}, Ljava/nio/Buffer;->limit()I
move-result p0
sub-int/2addr v0, p0
return v0
.end method
.method private drain([BII)I
.locals 1
iget-object v0, p0, Lcom/google/common/io/ReaderInputStream;->byteBuffer:Ljava/nio/ByteBuffer;
.line 252
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->remaining()I
move-result v0
invoke-static {p3, v0}, Ljava/lang/Math;->min(II)I
move-result p3
iget-object p0, p0, Lcom/google/common/io/ReaderInputStream;->byteBuffer:Ljava/nio/ByteBuffer;
.line 253
invoke-virtual {p0, p1, p2, p3}, Ljava/nio/ByteBuffer;->get([BII)Ljava/nio/ByteBuffer;
return p3
.end method
.method private static grow(Ljava/nio/CharBuffer;)Ljava/nio/CharBuffer;
.locals 2
.line 191
invoke-virtual {p0}, Ljava/nio/CharBuffer;->array()[C
move-result-object v0
invoke-virtual {p0}, Ljava/nio/CharBuffer;->capacity()I
move-result v1
mul-int/lit8 v1, v1, 0x2
invoke-static {v0, v1}, Ljava/util/Arrays;->copyOf([CI)[C
move-result-object v0
.line 192
invoke-static {v0}, Ljava/nio/CharBuffer;->wrap([C)Ljava/nio/CharBuffer;
move-result-object v0
.line 193
invoke-virtual {p0}, Ljava/nio/CharBuffer;->position()I
move-result v1
invoke-static {v0, v1}, Lcom/google/common/io/Java8Compatibility;->position(Ljava/nio/Buffer;I)V
.line 194
invoke-virtual {p0}, Ljava/nio/CharBuffer;->limit()I
move-result p0
invoke-static {v0, p0}, Lcom/google/common/io/Java8Compatibility;->limit(Ljava/nio/Buffer;I)V
return-object v0
.end method
.method private readMoreChars()V
.locals 4
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
iget-object v0, p0, Lcom/google/common/io/ReaderInputStream;->charBuffer:Ljava/nio/CharBuffer;
.line 208
invoke-static {v0}, Lcom/google/common/io/ReaderInputStream;->availableCapacity(Ljava/nio/Buffer;)I
move-result v0
if-nez v0, :cond_1
iget-object v0, p0, Lcom/google/common/io/ReaderInputStream;->charBuffer:Ljava/nio/CharBuffer;
.line 209
invoke-virtual {v0}, Ljava/nio/CharBuffer;->position()I
move-result v0
if-lez v0, :cond_0
iget-object v0, p0, Lcom/google/common/io/ReaderInputStream;->charBuffer:Ljava/nio/CharBuffer;
.line 211
invoke-virtual {v0}, Ljava/nio/CharBuffer;->compact()Ljava/nio/CharBuffer;
move-result-object v0
invoke-static {v0}, Lcom/google/common/io/Java8Compatibility;->flip(Ljava/nio/Buffer;)V
goto :goto_0
:cond_0
iget-object v0, p0, Lcom/google/common/io/ReaderInputStream;->charBuffer:Ljava/nio/CharBuffer;
.line 214
invoke-static {v0}, Lcom/google/common/io/ReaderInputStream;->grow(Ljava/nio/CharBuffer;)Ljava/nio/CharBuffer;
move-result-object v0
iput-object v0, p0, Lcom/google/common/io/ReaderInputStream;->charBuffer:Ljava/nio/CharBuffer;
:cond_1
:goto_0
iget-object v0, p0, Lcom/google/common/io/ReaderInputStream;->charBuffer:Ljava/nio/CharBuffer;
.line 219
invoke-virtual {v0}, Ljava/nio/CharBuffer;->limit()I
move-result v0
iget-object v1, p0, Lcom/google/common/io/ReaderInputStream;->reader:Ljava/io/Reader;
iget-object v2, p0, Lcom/google/common/io/ReaderInputStream;->charBuffer:Ljava/nio/CharBuffer;
.line 220
invoke-virtual {v2}, Ljava/nio/CharBuffer;->array()[C
move-result-object v2
iget-object v3, p0, Lcom/google/common/io/ReaderInputStream;->charBuffer:Ljava/nio/CharBuffer;
invoke-static {v3}, Lcom/google/common/io/ReaderInputStream;->availableCapacity(Ljava/nio/Buffer;)I
move-result v3
invoke-virtual {v1, v2, v0, v3}, Ljava/io/Reader;->read([CII)I
move-result v1
const/4 v2, -0x1
if-ne v1, v2, :cond_2
const/4 v0, 0x1
iput-boolean v0, p0, Lcom/google/common/io/ReaderInputStream;->endOfInput:Z
goto :goto_1
:cond_2
iget-object p0, p0, Lcom/google/common/io/ReaderInputStream;->charBuffer:Ljava/nio/CharBuffer;
add-int/2addr v0, v1
.line 224
invoke-static {p0, v0}, Lcom/google/common/io/Java8Compatibility;->limit(Ljava/nio/Buffer;I)V
:goto_1
return-void
.end method
.method private startDraining(Z)V
.locals 1
iget-object v0, p0, Lcom/google/common/io/ReaderInputStream;->byteBuffer:Ljava/nio/ByteBuffer;
.line 239
invoke-static {v0}, Lcom/google/common/io/Java8Compatibility;->flip(Ljava/nio/Buffer;)V
if-eqz p1, :cond_0
iget-object p1, p0, Lcom/google/common/io/ReaderInputStream;->byteBuffer:Ljava/nio/ByteBuffer;
.line 240
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->remaining()I
move-result p1
if-nez p1, :cond_0
iget-object p1, p0, Lcom/google/common/io/ReaderInputStream;->byteBuffer:Ljava/nio/ByteBuffer;
.line 241
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->capacity()I
move-result p1
mul-int/lit8 p1, p1, 0x2
invoke-static {p1}, Ljava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer;
move-result-object p1
iput-object p1, p0, Lcom/google/common/io/ReaderInputStream;->byteBuffer:Ljava/nio/ByteBuffer;
goto :goto_0
:cond_0
const/4 p1, 0x1
iput-boolean p1, p0, Lcom/google/common/io/ReaderInputStream;->draining:Z
:goto_0
return-void
.end method
# virtual methods
.method public close()V
.locals 0
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
iget-object p0, p0, Lcom/google/common/io/ReaderInputStream;->reader:Ljava/io/Reader;
.line 115
invoke-virtual {p0}, Ljava/io/Reader;->close()V
return-void
.end method
.method public read()I
.locals 2
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
iget-object v0, p0, Lcom/google/common/io/ReaderInputStream;->singleByte:[B
.line 120
invoke-virtual {p0, v0}, Lcom/google/common/io/ReaderInputStream;->read([B)I
move-result v0
const/4 v1, 0x1
if-ne v0, v1, :cond_0
iget-object p0, p0, Lcom/google/common/io/ReaderInputStream;->singleByte:[B
const/4 v0, 0x0
aget-byte p0, p0, v0
invoke-static {p0}, Lcom/google/common/primitives/UnsignedBytes;->toInt(B)I
move-result p0
goto :goto_0
:cond_0
const/4 p0, -0x1
:goto_0
return p0
.end method
.method public read([BII)I
.locals 7
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
add-int v0, p2, p3
.line 128
array-length v1, p1
invoke-static {p2, v0, v1}, Lcom/google/common/base/Preconditions;->checkPositionIndexes(III)V
const/4 v0, 0x0
if-nez p3, :cond_0
return v0
:cond_0
iget-boolean v1, p0, Lcom/google/common/io/ReaderInputStream;->endOfInput:Z
move v2, v0
:goto_0
iget-boolean v3, p0, Lcom/google/common/io/ReaderInputStream;->draining:Z
if-eqz v3, :cond_4
add-int v3, p2, v2
sub-int v4, p3, v2
.line 142
invoke-direct {p0, p1, v3, v4}, Lcom/google/common/io/ReaderInputStream;->drain([BII)I
move-result v3
add-int/2addr v2, v3
if-eq v2, p3, :cond_2
iget-boolean v3, p0, Lcom/google/common/io/ReaderInputStream;->doneFlushing:Z
if-eqz v3, :cond_1
goto :goto_1
:cond_1
iput-boolean v0, p0, Lcom/google/common/io/ReaderInputStream;->draining:Z
iget-object v3, p0, Lcom/google/common/io/ReaderInputStream;->byteBuffer:Ljava/nio/ByteBuffer;
.line 147
invoke-static {v3}, Lcom/google/common/io/Java8Compatibility;->clear(Ljava/nio/Buffer;)V
goto :goto_3
:cond_2
:goto_1
if-lez v2, :cond_3
goto :goto_2
:cond_3
const/4 v2, -0x1
:goto_2
return v2
:cond_4
:goto_3
iget-boolean v3, p0, Lcom/google/common/io/ReaderInputStream;->doneFlushing:Z
if-eqz v3, :cond_5
.line 155
sget-object v3, Ljava/nio/charset/CoderResult;->UNDERFLOW:Ljava/nio/charset/CoderResult;
goto :goto_4
:cond_5
if-eqz v1, :cond_6
iget-object v3, p0, Lcom/google/common/io/ReaderInputStream;->encoder:Ljava/nio/charset/CharsetEncoder;
iget-object v4, p0, Lcom/google/common/io/ReaderInputStream;->byteBuffer:Ljava/nio/ByteBuffer;
.line 157
invoke-virtual {v3, v4}, Ljava/nio/charset/CharsetEncoder;->flush(Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;
move-result-object v3
goto :goto_4
:cond_6
iget-object v3, p0, Lcom/google/common/io/ReaderInputStream;->encoder:Ljava/nio/charset/CharsetEncoder;
iget-object v4, p0, Lcom/google/common/io/ReaderInputStream;->charBuffer:Ljava/nio/CharBuffer;
iget-object v5, p0, Lcom/google/common/io/ReaderInputStream;->byteBuffer:Ljava/nio/ByteBuffer;
iget-boolean v6, p0, Lcom/google/common/io/ReaderInputStream;->endOfInput:Z
.line 159
invoke-virtual {v3, v4, v5, v6}, Ljava/nio/charset/CharsetEncoder;->encode(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;Z)Ljava/nio/charset/CoderResult;
move-result-object v3
.line 162
:goto_4
invoke-virtual {v3}, Ljava/nio/charset/CoderResult;->isOverflow()Z
move-result v4
const/4 v5, 0x1
if-eqz v4, :cond_7
.line 164
invoke-direct {p0, v5}, Lcom/google/common/io/ReaderInputStream;->startDraining(Z)V
goto :goto_0
.line 166
:cond_7
invoke-virtual {v3}, Ljava/nio/charset/CoderResult;->isUnderflow()Z
move-result v4
if-eqz v4, :cond_a
if-eqz v1, :cond_8
iput-boolean v5, p0, Lcom/google/common/io/ReaderInputStream;->doneFlushing:Z
.line 173
invoke-direct {p0, v0}, Lcom/google/common/io/ReaderInputStream;->startDraining(Z)V
goto :goto_0
:cond_8
iget-boolean v3, p0, Lcom/google/common/io/ReaderInputStream;->endOfInput:Z
if-eqz v3, :cond_9
move v1, v5
goto :goto_3
.line 178
:cond_9
invoke-direct {p0}, Lcom/google/common/io/ReaderInputStream;->readMoreChars()V
goto :goto_3
.line 180
:cond_a
invoke-virtual {v3}, Ljava/nio/charset/CoderResult;->isError()Z
move-result v4
if-eqz v4, :cond_4
.line 182
invoke-virtual {v3}, Ljava/nio/charset/CoderResult;->throwException()V
return v0
.end method