ByteArrayScanner.smali
.class public Lcom/facebook/network/connectionclass/ByteArrayScanner;
.super Ljava/lang/Object;
.source "ByteArrayScanner.java"
# instance fields
.field public mCurrentOffset:I
.field public mData:[B
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end field
.field public mDelimiter:C
.field public mDelimiterSet:Z
.field public mTotalLength:I
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>()V
.registers 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method private advance()I
.registers 5
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/util/NoSuchElementException;
}
.end annotation
invoke-direct {p0}, Lcom/facebook/network/connectionclass/ByteArrayScanner;->throwIfNotReset()V
invoke-direct {p0}, Lcom/facebook/network/connectionclass/ByteArrayScanner;->throwIfDelimiterNotSet()V
iget v0, p0, Lcom/facebook/network/connectionclass/ByteArrayScanner;->mTotalLength:I
iget v1, p0, Lcom/facebook/network/connectionclass/ByteArrayScanner;->mCurrentOffset:I
if-le v0, v1, :cond_29
iget-object v2, p0, Lcom/facebook/network/connectionclass/ByteArrayScanner;->mData:[B
iget-char v3, p0, Lcom/facebook/network/connectionclass/ByteArrayScanner;->mDelimiter:C
invoke-static {v2, v1, v0, v3}, Lcom/facebook/network/connectionclass/ByteArrayScanner;->indexOf([BIIC)I
move-result v0
const/4 v1, -0x1
if-ne v0, v1, :cond_20
iget v0, p0, Lcom/facebook/network/connectionclass/ByteArrayScanner;->mTotalLength:I
iget v1, p0, Lcom/facebook/network/connectionclass/ByteArrayScanner;->mCurrentOffset:I
sub-int v1, v0, v1
iput v0, p0, Lcom/facebook/network/connectionclass/ByteArrayScanner;->mCurrentOffset:I
return v1
:cond_20
iget v1, p0, Lcom/facebook/network/connectionclass/ByteArrayScanner;->mCurrentOffset:I
sub-int v1, v0, v1
add-int/lit8 v0, v0, 0x1
iput v0, p0, Lcom/facebook/network/connectionclass/ByteArrayScanner;->mCurrentOffset:I
return v1
:cond_29
new-instance v0, Ljava/util/NoSuchElementException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Reading past end of input stream at "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v2, p0, Lcom/facebook/network/connectionclass/ByteArrayScanner;->mCurrentOffset:I
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v2, "."
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/util/NoSuchElementException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static indexOf([BIIC)I
.registers 5
:goto_0
if-ge p1, p2, :cond_a
aget-byte v0, p0, p1
if-ne v0, p3, :cond_7
return p1
:cond_7
add-int/lit8 p1, p1, 0x1
goto :goto_0
:cond_a
const/4 p0, -0x1
return p0
.end method
.method public static parseInt([BII)I
.registers 6
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/NumberFormatException;
}
.end annotation
const/4 v0, 0x0
:goto_1
if-ge p1, p2, :cond_32
add-int/lit8 v1, p1, 0x1
aget-byte p1, p0, p1
add-int/lit8 p1, p1, -0x30
if-ltz p1, :cond_14
const/16 v2, 0x9
if-gt p1, v2, :cond_14
mul-int/lit8 v0, v0, 0xa
add-int/2addr v0, p1
move p1, v1
goto :goto_1
:cond_14
new-instance p0, Ljava/lang/NumberFormatException;
new-instance p1, Ljava/lang/StringBuilder;
invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V
const-string p2, "Invalid int in buffer at "
invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
add-int/lit8 v1, v1, -0x1
invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string p2, "."
invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {p0, p1}, Ljava/lang/NumberFormatException;-><init>(Ljava/lang/String;)V
throw p0
:cond_32
return v0
.end method
.method private throwIfDelimiterNotSet()V
.registers 3
iget-boolean v0, p0, Lcom/facebook/network/connectionclass/ByteArrayScanner;->mDelimiterSet:Z
if-eqz v0, :cond_5
return-void
:cond_5
new-instance v0, Ljava/lang/IllegalStateException;
const-string v1, "Must call useDelimiter first"
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method private throwIfNotReset()V
.registers 3
iget-object v0, p0, Lcom/facebook/network/connectionclass/ByteArrayScanner;->mData:[B
if-eqz v0, :cond_5
return-void
:cond_5
new-instance v0, Ljava/lang/IllegalStateException;
const-string v1, "Must call reset first"
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
.end method
# virtual methods
.method public nextInt()I
.registers 4
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/util/NoSuchElementException;
}
.end annotation
invoke-direct {p0}, Lcom/facebook/network/connectionclass/ByteArrayScanner;->throwIfNotReset()V
invoke-direct {p0}, Lcom/facebook/network/connectionclass/ByteArrayScanner;->throwIfDelimiterNotSet()V
iget v0, p0, Lcom/facebook/network/connectionclass/ByteArrayScanner;->mCurrentOffset:I
invoke-direct {p0}, Lcom/facebook/network/connectionclass/ByteArrayScanner;->advance()I
move-result v1
iget-object v2, p0, Lcom/facebook/network/connectionclass/ByteArrayScanner;->mData:[B
add-int/2addr v1, v0
invoke-static {v2, v0, v1}, Lcom/facebook/network/connectionclass/ByteArrayScanner;->parseInt([BII)I
move-result v0
return v0
.end method
.method public nextString()Ljava/lang/String;
.registers 5
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/util/NoSuchElementException;
}
.end annotation
invoke-direct {p0}, Lcom/facebook/network/connectionclass/ByteArrayScanner;->throwIfNotReset()V
invoke-direct {p0}, Lcom/facebook/network/connectionclass/ByteArrayScanner;->throwIfDelimiterNotSet()V
iget v0, p0, Lcom/facebook/network/connectionclass/ByteArrayScanner;->mCurrentOffset:I
invoke-direct {p0}, Lcom/facebook/network/connectionclass/ByteArrayScanner;->advance()I
move-result v1
new-instance v2, Ljava/lang/String;
iget-object v3, p0, Lcom/facebook/network/connectionclass/ByteArrayScanner;->mData:[B
invoke-direct {v2, v3, v0, v1}, Ljava/lang/String;-><init>([BII)V
return-object v2
.end method
.method public nextStringEquals(Ljava/lang/String;)Z
.registers 7
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/util/NoSuchElementException;
}
.end annotation
iget v0, p0, Lcom/facebook/network/connectionclass/ByteArrayScanner;->mCurrentOffset:I
invoke-direct {p0}, Lcom/facebook/network/connectionclass/ByteArrayScanner;->advance()I
move-result v1
invoke-virtual {p1}, Ljava/lang/String;->length()I
move-result v2
const/4 v3, 0x0
if-eq v2, v1, :cond_e
return v3
:cond_e
const/4 v1, 0x0
:goto_f
invoke-virtual {p1}, Ljava/lang/String;->length()I
move-result v2
if-ge v1, v2, :cond_25
invoke-virtual {p1, v1}, Ljava/lang/String;->charAt(I)C
move-result v2
iget-object v4, p0, Lcom/facebook/network/connectionclass/ByteArrayScanner;->mData:[B
aget-byte v4, v4, v0
if-eq v2, v4, :cond_20
return v3
:cond_20
add-int/lit8 v0, v0, 0x1
add-int/lit8 v1, v1, 0x1
goto :goto_f
:cond_25
const/4 p1, 0x1
return p1
.end method
.method public reset([BI)Lcom/facebook/network/connectionclass/ByteArrayScanner;
.registers 3
iput-object p1, p0, Lcom/facebook/network/connectionclass/ByteArrayScanner;->mData:[B
const/4 p1, 0x0
iput p1, p0, Lcom/facebook/network/connectionclass/ByteArrayScanner;->mCurrentOffset:I
iput p2, p0, Lcom/facebook/network/connectionclass/ByteArrayScanner;->mTotalLength:I
iput-boolean p1, p0, Lcom/facebook/network/connectionclass/ByteArrayScanner;->mDelimiterSet:Z
return-object p0
.end method
.method public skip()V
.registers 1
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/util/NoSuchElementException;
}
.end annotation
invoke-direct {p0}, Lcom/facebook/network/connectionclass/ByteArrayScanner;->throwIfNotReset()V
invoke-direct {p0}, Lcom/facebook/network/connectionclass/ByteArrayScanner;->throwIfDelimiterNotSet()V
invoke-direct {p0}, Lcom/facebook/network/connectionclass/ByteArrayScanner;->advance()I
return-void
.end method
.method public useDelimiter(C)Lcom/facebook/network/connectionclass/ByteArrayScanner;
.registers 2
invoke-direct {p0}, Lcom/facebook/network/connectionclass/ByteArrayScanner;->throwIfNotReset()V
iput-char p1, p0, Lcom/facebook/network/connectionclass/ByteArrayScanner;->mDelimiter:C
const/4 p1, 0x1
iput-boolean p1, p0, Lcom/facebook/network/connectionclass/ByteArrayScanner;->mDelimiterSet:Z
return-object p0
.end method