.class public final Lokhttp3/internal/http2/Hpack$Reader; .super Ljava/lang/Object; .source "Hpack.kt" # annotations .annotation system Ldalvik/annotation/EnclosingClass; value = Lokhttp3/internal/http2/Hpack; .end annotation .annotation system Ldalvik/annotation/InnerClass; accessFlags = 0x19 name = "Reader" .end annotation .annotation runtime Lkotlin/Metadata; bv = { 0x1, 0x0, 0x3 } d1 = { "\u0000N\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0008\n\u0002\u0008\u0003\n\u0002\u0010\u0011\n\u0002\u0018\u0002\n\u0002\u0008\u0004\n\u0002\u0010!\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0002\u0008\u0006\n\u0002\u0010 \n\u0000\n\u0002\u0018\u0002\n\u0002\u0008\u0003\n\u0002\u0010\u000b\n\u0002\u0008\r\u0018\u00002\u00020\u0001B!\u0008\u0007\u0012\u0006\u0010\u0002\u001a\u00020\u0003\u0012\u0006\u0010\u0004\u001a\u00020\u0005\u0012\u0008\u0008\u0002\u0010\u0006\u001a\u00020\u0005\u00a2\u0006\u0002\u0010\u0007J\u0008\u0010\u0012\u001a\u00020\u0013H\u0002J\u0008\u0010\u0014\u001a\u00020\u0013H\u0002J\u0010\u0010\u0015\u001a\u00020\u00052\u0006\u0010\u0016\u001a\u00020\u0005H\u0002J\u0010\u0010\u0017\u001a\u00020\u00052\u0006\u0010\u0018\u001a\u00020\u0005H\u0002J\u000c\u0010\u0019\u001a\u0008\u0012\u0004\u0012\u00020\n0\u001aJ\u0010\u0010\u001b\u001a\u00020\u001c2\u0006\u0010\u0016\u001a\u00020\u0005H\u0002J\u0018\u0010\u001d\u001a\u00020\u00132\u0006\u0010\u0016\u001a\u00020\u00052\u0006\u0010\u001e\u001a\u00020\nH\u0002J\u0010\u0010\u001f\u001a\u00020 2\u0006\u0010\u0016\u001a\u00020\u0005H\u0002J\u0006\u0010\u0006\u001a\u00020\u0005J\u0008\u0010!\u001a\u00020\u0005H\u0002J\u0006\u0010\"\u001a\u00020\u001cJ\u0006\u0010#\u001a\u00020\u0013J\u0010\u0010$\u001a\u00020\u00132\u0006\u0010\u0016\u001a\u00020\u0005H\u0002J\u0016\u0010%\u001a\u00020\u00052\u0006\u0010&\u001a\u00020\u00052\u0006\u0010\'\u001a\u00020\u0005J\u0010\u0010(\u001a\u00020\u00132\u0006\u0010)\u001a\u00020\u0005H\u0002J\u0008\u0010*\u001a\u00020\u0013H\u0002J\u0010\u0010+\u001a\u00020\u00132\u0006\u0010\u0016\u001a\u00020\u0005H\u0002J\u0008\u0010,\u001a\u00020\u0013H\u0002R\u001c\u0010\u0008\u001a\n\u0012\u0006\u0012\u0004\u0018\u00010\n0\t8\u0006@\u0006X\u0087\u000e\u00a2\u0006\u0004\n\u0002\u0010\u000bR\u0012\u0010\u000c\u001a\u00020\u00058\u0006@\u0006X\u0087\u000e\u00a2\u0006\u0002\n\u0000R\u0012\u0010\r\u001a\u00020\u00058\u0006@\u0006X\u0087\u000e\u00a2\u0006\u0002\n\u0000R\u0014\u0010\u000e\u001a\u0008\u0012\u0004\u0012\u00020\n0\u000fX\u0082\u0004\u00a2\u0006\u0002\n\u0000R\u000e\u0010\u0004\u001a\u00020\u0005X\u0082\u0004\u00a2\u0006\u0002\n\u0000R\u000e\u0010\u0006\u001a\u00020\u0005X\u0082\u000e\u00a2\u0006\u0002\n\u0000R\u000e\u0010\u0010\u001a\u00020\u0005X\u0082\u000e\u00a2\u0006\u0002\n\u0000R\u000e\u0010\u0002\u001a\u00020\u0011X\u0082\u0004\u00a2\u0006\u0002\n\u0000\u00a8\u0006-" } d2 = { "Lokhttp3/internal/http2/Hpack$Reader;", "", "source", "Lokio/Source;", "headerTableSizeSetting", "", "maxDynamicTableByteCount", "(Lokio/Source;II)V", "dynamicTable", "", "Lokhttp3/internal/http2/Header;", "[Lokhttp3/internal/http2/Header;", "dynamicTableByteCount", "headerCount", "headerList", "", "nextHeaderIndex", "Lokio/BufferedSource;", "adjustDynamicTableByteCount", "", "clearDynamicTable", "dynamicTableIndex", "index", "evictToRecoverBytes", "bytesToRecover", "getAndResetHeaderList", "", "getName", "Lokio/ByteString;", "insertIntoDynamicTable", "entry", "isStaticHeader", "", "readByte", "readByteString", "readHeaders", "readIndexedHeader", "readInt", "firstByte", "prefixMask", "readLiteralHeaderWithIncrementalIndexingIndexedName", "nameIndex", "readLiteralHeaderWithIncrementalIndexingNewName", "readLiteralHeaderWithoutIndexingIndexedName", "readLiteralHeaderWithoutIndexingNewName", "okhttp" } k = 0x1 mv = { 0x1, 0x4, 0x0 } .end annotation # instance fields .field public dynamicTable:[Lokhttp3/internal/http2/Header; .field public dynamicTableByteCount:I .field public headerCount:I .field private final headerList:Ljava/util/List; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/List<", "Lokhttp3/internal/http2/Header;", ">;" } .end annotation .end field .field private final headerTableSizeSetting:I .field private maxDynamicTableByteCount:I .field private nextHeaderIndex:I .field private final source:Lokio/BufferedSource; # direct methods .method public constructor (Lokio/Source;I)V .locals 6 const/4 v3, 0x0 const/4 v4, 0x4 const/4 v5, 0x0 move-object v0, p0 move-object v1, p1 move v2, p2 invoke-direct/range {v0 .. v5}, Lokhttp3/internal/http2/Hpack$Reader;->(Lokio/Source;IIILkotlin/jvm/internal/DefaultConstructorMarker;)V return-void .end method .method public constructor (Lokio/Source;II)V .locals 1 const-string v0, "source" invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V .line 125 invoke-direct {p0}, Ljava/lang/Object;->()V iput p2, p0, Lokhttp3/internal/http2/Hpack$Reader;->headerTableSizeSetting:I iput p3, p0, Lokhttp3/internal/http2/Hpack$Reader;->maxDynamicTableByteCount:I .line 130 new-instance p2, Ljava/util/ArrayList; invoke-direct {p2}, Ljava/util/ArrayList;->()V check-cast p2, Ljava/util/List; iput-object p2, p0, Lokhttp3/internal/http2/Hpack$Reader;->headerList:Ljava/util/List; .line 131 invoke-static {p1}, Lokio/Okio;->buffer(Lokio/Source;)Lokio/BufferedSource; move-result-object p1 iput-object p1, p0, Lokhttp3/internal/http2/Hpack$Reader;->source:Lokio/BufferedSource; const/16 p1, 0x8 new-array p1, p1, [Lokhttp3/internal/http2/Header; iput-object p1, p0, Lokhttp3/internal/http2/Hpack$Reader;->dynamicTable:[Lokhttp3/internal/http2/Header; array-length p1, p1 add-int/lit8 p1, p1, -0x1 iput p1, p0, Lokhttp3/internal/http2/Hpack$Reader;->nextHeaderIndex:I return-void .end method .method public synthetic constructor (Lokio/Source;IIILkotlin/jvm/internal/DefaultConstructorMarker;)V .locals 0 and-int/lit8 p4, p4, 0x4 if-eqz p4, :cond_0 move p3, p2 .line 128 :cond_0 invoke-direct {p0, p1, p2, p3}, Lokhttp3/internal/http2/Hpack$Reader;->(Lokio/Source;II)V return-void .end method .method private final adjustDynamicTableByteCount()V .locals 2 iget v0, p0, Lokhttp3/internal/http2/Hpack$Reader;->maxDynamicTableByteCount:I iget v1, p0, Lokhttp3/internal/http2/Hpack$Reader;->dynamicTableByteCount:I if-ge v0, v1, :cond_1 if-nez v0, :cond_0 .line 151 invoke-direct {p0}, Lokhttp3/internal/http2/Hpack$Reader;->clearDynamicTable()V goto :goto_0 :cond_0 sub-int/2addr v1, v0 .line 153 invoke-direct {p0, v1}, Lokhttp3/internal/http2/Hpack$Reader;->evictToRecoverBytes(I)I :cond_1 :goto_0 return-void .end method .method private final clearDynamicTable()V .locals 6 iget-object v0, p0, Lokhttp3/internal/http2/Hpack$Reader;->dynamicTable:[Lokhttp3/internal/http2/Header; const/4 v1, 0x0 const/4 v2, 0x0 const/4 v3, 0x0 const/4 v4, 0x6 const/4 v5, 0x0 .line 159 invoke-static/range {v0 .. v5}, Lkotlin/collections/ArraysKt;->fill$default([Ljava/lang/Object;Ljava/lang/Object;IIILjava/lang/Object;)V iget-object v0, p0, Lokhttp3/internal/http2/Hpack$Reader;->dynamicTable:[Lokhttp3/internal/http2/Header; .line 160 array-length v0, v0 add-int/lit8 v0, v0, -0x1 iput v0, p0, Lokhttp3/internal/http2/Hpack$Reader;->nextHeaderIndex:I const/4 v0, 0x0 iput v0, p0, Lokhttp3/internal/http2/Hpack$Reader;->headerCount:I iput v0, p0, Lokhttp3/internal/http2/Hpack$Reader;->dynamicTableByteCount:I return-void .end method .method private final dynamicTableIndex(I)I .locals 0 iget p0, p0, Lokhttp3/internal/http2/Hpack$Reader;->nextHeaderIndex:I add-int/lit8 p0, p0, 0x1 add-int/2addr p0, p1 return p0 .end method .method private final evictToRecoverBytes(I)I .locals 4 const/4 v0, 0x0 if-lez p1, :cond_1 iget-object v1, p0, Lokhttp3/internal/http2/Hpack$Reader;->dynamicTable:[Lokhttp3/internal/http2/Header; .line 171 array-length v1, v1 add-int/lit8 v1, v1, -0x1 :goto_0 iget v2, p0, Lokhttp3/internal/http2/Hpack$Reader;->nextHeaderIndex:I if-lt v1, v2, :cond_0 if-lez p1, :cond_0 iget-object v2, p0, Lokhttp3/internal/http2/Hpack$Reader;->dynamicTable:[Lokhttp3/internal/http2/Header; .line 173 aget-object v2, v2, v1 invoke-static {v2}, Lkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;)V .line 174 iget v3, v2, Lokhttp3/internal/http2/Header;->hpackSize:I sub-int/2addr p1, v3 iget v3, p0, Lokhttp3/internal/http2/Hpack$Reader;->dynamicTableByteCount:I .line 175 iget v2, v2, Lokhttp3/internal/http2/Header;->hpackSize:I sub-int/2addr v3, v2 iput v3, p0, Lokhttp3/internal/http2/Hpack$Reader;->dynamicTableByteCount:I iget v2, p0, Lokhttp3/internal/http2/Hpack$Reader;->headerCount:I add-int/lit8 v2, v2, -0x1 iput v2, p0, Lokhttp3/internal/http2/Hpack$Reader;->headerCount:I add-int/lit8 v0, v0, 0x1 add-int/lit8 v1, v1, -0x1 goto :goto_0 :cond_0 iget-object p1, p0, Lokhttp3/internal/http2/Hpack$Reader;->dynamicTable:[Lokhttp3/internal/http2/Header; add-int/lit8 v1, v2, 0x1 add-int/lit8 v2, v2, 0x1 add-int/2addr v2, v0 iget v3, p0, Lokhttp3/internal/http2/Hpack$Reader;->headerCount:I .line 180 invoke-static {p1, v1, p1, v2, v3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V iget p1, p0, Lokhttp3/internal/http2/Hpack$Reader;->nextHeaderIndex:I add-int/2addr p1, v0 iput p1, p0, Lokhttp3/internal/http2/Hpack$Reader;->nextHeaderIndex:I :cond_1 return v0 .end method .method private final getName(I)Lokio/ByteString; .locals 2 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 284 invoke-direct {p0, p1}, Lokhttp3/internal/http2/Hpack$Reader;->isStaticHeader(I)Z move-result v0 if-eqz v0, :cond_0 .line 285 sget-object p0, Lokhttp3/internal/http2/Hpack;->INSTANCE:Lokhttp3/internal/http2/Hpack; invoke-virtual {p0}, Lokhttp3/internal/http2/Hpack;->getSTATIC_HEADER_TABLE()[Lokhttp3/internal/http2/Header; move-result-object p0 aget-object p0, p0, p1 iget-object p0, p0, Lokhttp3/internal/http2/Header;->name:Lokio/ByteString; goto :goto_0 .line 287 :cond_0 sget-object v0, Lokhttp3/internal/http2/Hpack;->INSTANCE:Lokhttp3/internal/http2/Hpack; invoke-virtual {v0}, Lokhttp3/internal/http2/Hpack;->getSTATIC_HEADER_TABLE()[Lokhttp3/internal/http2/Header; move-result-object v0 array-length v0, v0 sub-int v0, p1, v0 invoke-direct {p0, v0}, Lokhttp3/internal/http2/Hpack$Reader;->dynamicTableIndex(I)I move-result v0 if-ltz v0, :cond_1 iget-object p0, p0, Lokhttp3/internal/http2/Hpack$Reader;->dynamicTable:[Lokhttp3/internal/http2/Header; .line 288 array-length v1, p0 if-ge v0, v1, :cond_1 .line 292 aget-object p0, p0, v0 invoke-static {p0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;)V iget-object p0, p0, Lokhttp3/internal/http2/Header;->name:Lokio/ByteString; :goto_0 return-object p0 .line 289 :cond_1 new-instance p0, Ljava/io/IOException; new-instance v0, Ljava/lang/StringBuilder; const-string v1, "Header index too large " invoke-direct {v0, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V add-int/lit8 p1, p1, 0x1 invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object p1 invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p1 invoke-direct {p0, p1}, Ljava/io/IOException;->(Ljava/lang/String;)V check-cast p0, Ljava/lang/Throwable; throw p0 .end method .method private final insertIntoDynamicTable(ILokhttp3/internal/http2/Header;)V .locals 5 iget-object v0, p0, Lokhttp3/internal/http2/Hpack$Reader;->headerList:Ljava/util/List; .line 303 invoke-interface {v0, p2}, Ljava/util/List;->add(Ljava/lang/Object;)Z .line 305 iget v0, p2, Lokhttp3/internal/http2/Header;->hpackSize:I const/4 v1, -0x1 if-eq p1, v1, :cond_0 iget-object v2, p0, Lokhttp3/internal/http2/Hpack$Reader;->dynamicTable:[Lokhttp3/internal/http2/Header; .line 307 invoke-direct {p0, p1}, Lokhttp3/internal/http2/Hpack$Reader;->dynamicTableIndex(I)I move-result v3 aget-object v2, v2, v3 invoke-static {v2}, Lkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;)V iget v2, v2, Lokhttp3/internal/http2/Header;->hpackSize:I sub-int/2addr v0, v2 :cond_0 iget v2, p0, Lokhttp3/internal/http2/Hpack$Reader;->maxDynamicTableByteCount:I if-le v0, v2, :cond_1 .line 312 invoke-direct {p0}, Lokhttp3/internal/http2/Hpack$Reader;->clearDynamicTable()V return-void :cond_1 iget v3, p0, Lokhttp3/internal/http2/Hpack$Reader;->dynamicTableByteCount:I add-int/2addr v3, v0 sub-int/2addr v3, v2 .line 318 invoke-direct {p0, v3}, Lokhttp3/internal/http2/Hpack$Reader;->evictToRecoverBytes(I)I move-result v2 if-ne p1, v1, :cond_3 iget p1, p0, Lokhttp3/internal/http2/Hpack$Reader;->headerCount:I add-int/lit8 p1, p1, 0x1 iget-object v1, p0, Lokhttp3/internal/http2/Hpack$Reader;->dynamicTable:[Lokhttp3/internal/http2/Header; .line 321 array-length v2, v1 if-le p1, v2, :cond_2 .line 322 array-length p1, v1 mul-int/lit8 p1, p1, 0x2 new-array p1, p1, [Lokhttp3/internal/http2/Header; .line 323 array-length v2, v1 array-length v3, v1 const/4 v4, 0x0 invoke-static {v1, v4, p1, v2, v3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V iget-object v1, p0, Lokhttp3/internal/http2/Hpack$Reader;->dynamicTable:[Lokhttp3/internal/http2/Header; .line 324 array-length v1, v1 add-int/lit8 v1, v1, -0x1 iput v1, p0, Lokhttp3/internal/http2/Hpack$Reader;->nextHeaderIndex:I iput-object p1, p0, Lokhttp3/internal/http2/Hpack$Reader;->dynamicTable:[Lokhttp3/internal/http2/Header; :cond_2 iget p1, p0, Lokhttp3/internal/http2/Hpack$Reader;->nextHeaderIndex:I add-int/lit8 v1, p1, -0x1 iput v1, p0, Lokhttp3/internal/http2/Hpack$Reader;->nextHeaderIndex:I iget-object v1, p0, Lokhttp3/internal/http2/Hpack$Reader;->dynamicTable:[Lokhttp3/internal/http2/Header; .line 328 aput-object p2, v1, p1 iget p1, p0, Lokhttp3/internal/http2/Hpack$Reader;->headerCount:I add-int/lit8 p1, p1, 0x1 iput p1, p0, Lokhttp3/internal/http2/Hpack$Reader;->headerCount:I goto :goto_0 .line 331 :cond_3 invoke-direct {p0, p1}, Lokhttp3/internal/http2/Hpack$Reader;->dynamicTableIndex(I)I move-result v1 add-int/2addr v1, v2 add-int/2addr p1, v1 iget-object v1, p0, Lokhttp3/internal/http2/Hpack$Reader;->dynamicTable:[Lokhttp3/internal/http2/Header; .line 332 aput-object p2, v1, p1 :goto_0 iget p1, p0, Lokhttp3/internal/http2/Hpack$Reader;->dynamicTableByteCount:I add-int/2addr p1, v0 iput p1, p0, Lokhttp3/internal/http2/Hpack$Reader;->dynamicTableByteCount:I return-void .end method .method private final isStaticHeader(I)Z .locals 1 if-ltz p1, :cond_0 .line 297 sget-object p0, Lokhttp3/internal/http2/Hpack;->INSTANCE:Lokhttp3/internal/http2/Hpack; invoke-virtual {p0}, Lokhttp3/internal/http2/Hpack;->getSTATIC_HEADER_TABLE()[Lokhttp3/internal/http2/Header; move-result-object p0 array-length p0, p0 const/4 v0, 0x1 sub-int/2addr p0, v0 if-gt p1, p0, :cond_0 goto :goto_0 :cond_0 const/4 v0, 0x0 :goto_0 return v0 .end method .method private final readByte()I .locals 1 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation iget-object p0, p0, Lokhttp3/internal/http2/Hpack$Reader;->source:Lokio/BufferedSource; .line 339 invoke-interface {p0}, Lokio/BufferedSource;->readByte()B move-result p0 const/16 v0, 0xff invoke-static {p0, v0}, Lokhttp3/internal/Util;->and(BI)I move-result p0 return p0 .end method .method private final readIndexedHeader(I)V .locals 3 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 237 invoke-direct {p0, p1}, Lokhttp3/internal/http2/Hpack$Reader;->isStaticHeader(I)Z move-result v0 if-eqz v0, :cond_0 .line 238 sget-object v0, Lokhttp3/internal/http2/Hpack;->INSTANCE:Lokhttp3/internal/http2/Hpack; invoke-virtual {v0}, Lokhttp3/internal/http2/Hpack;->getSTATIC_HEADER_TABLE()[Lokhttp3/internal/http2/Header; move-result-object v0 aget-object p1, v0, p1 iget-object p0, p0, Lokhttp3/internal/http2/Hpack$Reader;->headerList:Ljava/util/List; .line 239 invoke-interface {p0, p1}, Ljava/util/List;->add(Ljava/lang/Object;)Z goto :goto_0 .line 241 :cond_0 sget-object v0, Lokhttp3/internal/http2/Hpack;->INSTANCE:Lokhttp3/internal/http2/Hpack; invoke-virtual {v0}, Lokhttp3/internal/http2/Hpack;->getSTATIC_HEADER_TABLE()[Lokhttp3/internal/http2/Header; move-result-object v0 array-length v0, v0 sub-int v0, p1, v0 invoke-direct {p0, v0}, Lokhttp3/internal/http2/Hpack$Reader;->dynamicTableIndex(I)I move-result v0 if-ltz v0, :cond_1 iget-object v1, p0, Lokhttp3/internal/http2/Hpack$Reader;->dynamicTable:[Lokhttp3/internal/http2/Header; .line 242 array-length v2, v1 if-ge v0, v2, :cond_1 iget-object p0, p0, Lokhttp3/internal/http2/Hpack$Reader;->headerList:Ljava/util/List; .line 245 check-cast p0, Ljava/util/Collection; aget-object p1, v1, v0 invoke-static {p1}, Lkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;)V invoke-interface {p0, p1}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z :goto_0 return-void .line 243 :cond_1 new-instance p0, Ljava/io/IOException; new-instance v0, Ljava/lang/StringBuilder; const-string v1, "Header index too large " invoke-direct {v0, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V add-int/lit8 p1, p1, 0x1 invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object p1 invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p1 invoke-direct {p0, p1}, Ljava/io/IOException;->(Ljava/lang/String;)V check-cast p0, Ljava/lang/Throwable; throw p0 .end method .method private final readLiteralHeaderWithIncrementalIndexingIndexedName(I)V .locals 2 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 270 invoke-direct {p0, p1}, Lokhttp3/internal/http2/Hpack$Reader;->getName(I)Lokio/ByteString; move-result-object p1 .line 271 invoke-virtual {p0}, Lokhttp3/internal/http2/Hpack$Reader;->readByteString()Lokio/ByteString; move-result-object v0 .line 272 new-instance v1, Lokhttp3/internal/http2/Header; invoke-direct {v1, p1, v0}, Lokhttp3/internal/http2/Header;->(Lokio/ByteString;Lokio/ByteString;)V const/4 p1, -0x1 invoke-direct {p0, p1, v1}, Lokhttp3/internal/http2/Hpack$Reader;->insertIntoDynamicTable(ILokhttp3/internal/http2/Header;)V return-void .end method .method private final readLiteralHeaderWithIncrementalIndexingNewName()V .locals 3 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 277 sget-object v0, Lokhttp3/internal/http2/Hpack;->INSTANCE:Lokhttp3/internal/http2/Hpack; invoke-virtual {p0}, Lokhttp3/internal/http2/Hpack$Reader;->readByteString()Lokio/ByteString; move-result-object v1 invoke-virtual {v0, v1}, Lokhttp3/internal/http2/Hpack;->checkLowercase(Lokio/ByteString;)Lokio/ByteString; move-result-object v0 .line 278 invoke-virtual {p0}, Lokhttp3/internal/http2/Hpack$Reader;->readByteString()Lokio/ByteString; move-result-object v1 .line 279 new-instance v2, Lokhttp3/internal/http2/Header; invoke-direct {v2, v0, v1}, Lokhttp3/internal/http2/Header;->(Lokio/ByteString;Lokio/ByteString;)V const/4 v0, -0x1 invoke-direct {p0, v0, v2}, Lokhttp3/internal/http2/Hpack$Reader;->insertIntoDynamicTable(ILokhttp3/internal/http2/Header;)V return-void .end method .method private final readLiteralHeaderWithoutIndexingIndexedName(I)V .locals 2 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 256 invoke-direct {p0, p1}, Lokhttp3/internal/http2/Hpack$Reader;->getName(I)Lokio/ByteString; move-result-object p1 .line 257 invoke-virtual {p0}, Lokhttp3/internal/http2/Hpack$Reader;->readByteString()Lokio/ByteString; move-result-object v0 iget-object p0, p0, Lokhttp3/internal/http2/Hpack$Reader;->headerList:Ljava/util/List; .line 258 new-instance v1, Lokhttp3/internal/http2/Header; invoke-direct {v1, p1, v0}, Lokhttp3/internal/http2/Header;->(Lokio/ByteString;Lokio/ByteString;)V invoke-interface {p0, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z return-void .end method .method private final readLiteralHeaderWithoutIndexingNewName()V .locals 3 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 263 sget-object v0, Lokhttp3/internal/http2/Hpack;->INSTANCE:Lokhttp3/internal/http2/Hpack; invoke-virtual {p0}, Lokhttp3/internal/http2/Hpack$Reader;->readByteString()Lokio/ByteString; move-result-object v1 invoke-virtual {v0, v1}, Lokhttp3/internal/http2/Hpack;->checkLowercase(Lokio/ByteString;)Lokio/ByteString; move-result-object v0 .line 264 invoke-virtual {p0}, Lokhttp3/internal/http2/Hpack$Reader;->readByteString()Lokio/ByteString; move-result-object v1 iget-object p0, p0, Lokhttp3/internal/http2/Hpack$Reader;->headerList:Ljava/util/List; .line 265 new-instance v2, Lokhttp3/internal/http2/Header; invoke-direct {v2, v0, v1}, Lokhttp3/internal/http2/Header;->(Lokio/ByteString;Lokio/ByteString;)V invoke-interface {p0, v2}, Ljava/util/List;->add(Ljava/lang/Object;)Z return-void .end method # virtual methods .method public final getAndResetHeaderList()Ljava/util/List; .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "()", "Ljava/util/List<", "Lokhttp3/internal/http2/Header;", ">;" } .end annotation iget-object v0, p0, Lokhttp3/internal/http2/Hpack$Reader;->headerList:Ljava/util/List; .line 141 check-cast v0, Ljava/lang/Iterable; invoke-static {v0}, Lkotlin/collections/CollectionsKt;->toList(Ljava/lang/Iterable;)Ljava/util/List; move-result-object v0 iget-object p0, p0, Lokhttp3/internal/http2/Hpack$Reader;->headerList:Ljava/util/List; .line 142 invoke-interface {p0}, Ljava/util/List;->clear()V return-object v0 .end method .method public final maxDynamicTableByteCount()I .locals 0 iget p0, p0, Lokhttp3/internal/http2/Hpack$Reader;->maxDynamicTableByteCount:I return p0 .end method .method public final readByteString()Lokio/ByteString; .locals 5 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 368 invoke-direct {p0}, Lokhttp3/internal/http2/Hpack$Reader;->readByte()I move-result v0 and-int/lit16 v1, v0, 0x80 const/16 v2, 0x80 if-ne v1, v2, :cond_0 const/4 v1, 0x1 goto :goto_0 :cond_0 const/4 v1, 0x0 :goto_0 const/16 v2, 0x7f .line 370 invoke-virtual {p0, v0, v2}, Lokhttp3/internal/http2/Hpack$Reader;->readInt(II)I move-result v0 int-to-long v2, v0 if-eqz v1, :cond_1 .line 373 new-instance v0, Lokio/Buffer; invoke-direct {v0}, Lokio/Buffer;->()V .line 374 sget-object v1, Lokhttp3/internal/http2/Huffman;->INSTANCE:Lokhttp3/internal/http2/Huffman; iget-object p0, p0, Lokhttp3/internal/http2/Hpack$Reader;->source:Lokio/BufferedSource; move-object v4, v0 check-cast v4, Lokio/BufferedSink; invoke-virtual {v1, p0, v2, v3, v4}, Lokhttp3/internal/http2/Huffman;->decode(Lokio/BufferedSource;JLokio/BufferedSink;)V .line 375 invoke-virtual {v0}, Lokio/Buffer;->readByteString()Lokio/ByteString; move-result-object p0 goto :goto_1 :cond_1 iget-object p0, p0, Lokhttp3/internal/http2/Hpack$Reader;->source:Lokio/BufferedSource; .line 377 invoke-interface {p0, v2, v3}, Lokio/BufferedSource;->readByteString(J)Lokio/ByteString; move-result-object p0 :goto_1 return-object p0 .end method .method public final readHeaders()V .locals 3 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation :goto_0 iget-object v0, p0, Lokhttp3/internal/http2/Hpack$Reader;->source:Lokio/BufferedSource; .line 193 invoke-interface {v0}, Lokio/BufferedSource;->exhausted()Z move-result v0 if-nez v0, :cond_8 iget-object v0, p0, Lokhttp3/internal/http2/Hpack$Reader;->source:Lokio/BufferedSource; .line 194 invoke-interface {v0}, Lokio/BufferedSource;->readByte()B move-result v0 const/16 v1, 0xff invoke-static {v0, v1}, Lokhttp3/internal/Util;->and(BI)I move-result v0 const/16 v1, 0x80 if-eq v0, v1, :cond_7 and-int/lit16 v2, v0, 0x80 if-ne v2, v1, :cond_0 const/16 v1, 0x7f .line 202 invoke-virtual {p0, v0, v1}, Lokhttp3/internal/http2/Hpack$Reader;->readInt(II)I move-result v0 add-int/lit8 v0, v0, -0x1 .line 203 invoke-direct {p0, v0}, Lokhttp3/internal/http2/Hpack$Reader;->readIndexedHeader(I)V goto :goto_0 :cond_0 const/16 v1, 0x40 if-ne v0, v1, :cond_1 .line 207 invoke-direct {p0}, Lokhttp3/internal/http2/Hpack$Reader;->readLiteralHeaderWithIncrementalIndexingNewName()V goto :goto_0 :cond_1 and-int/lit8 v2, v0, 0x40 if-ne v2, v1, :cond_2 const/16 v1, 0x3f .line 211 invoke-virtual {p0, v0, v1}, Lokhttp3/internal/http2/Hpack$Reader;->readInt(II)I move-result v0 add-int/lit8 v0, v0, -0x1 .line 212 invoke-direct {p0, v0}, Lokhttp3/internal/http2/Hpack$Reader;->readLiteralHeaderWithIncrementalIndexingIndexedName(I)V goto :goto_0 :cond_2 and-int/lit8 v1, v0, 0x20 const/16 v2, 0x20 if-ne v1, v2, :cond_4 const/16 v1, 0x1f .line 216 invoke-virtual {p0, v0, v1}, Lokhttp3/internal/http2/Hpack$Reader;->readInt(II)I move-result v0 iput v0, p0, Lokhttp3/internal/http2/Hpack$Reader;->maxDynamicTableByteCount:I if-ltz v0, :cond_3 iget v1, p0, Lokhttp3/internal/http2/Hpack$Reader;->headerTableSizeSetting:I if-gt v0, v1, :cond_3 .line 220 invoke-direct {p0}, Lokhttp3/internal/http2/Hpack$Reader;->adjustDynamicTableByteCount()V goto :goto_0 .line 218 :cond_3 new-instance v0, Ljava/io/IOException; new-instance v1, Ljava/lang/StringBuilder; const-string v2, "Invalid dynamic table size update " invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V iget p0, p0, Lokhttp3/internal/http2/Hpack$Reader;->maxDynamicTableByteCount:I invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object p0 invoke-virtual {p0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p0 invoke-direct {v0, p0}, Ljava/io/IOException;->(Ljava/lang/String;)V check-cast v0, Ljava/lang/Throwable; throw v0 :cond_4 const/16 v1, 0x10 if-eq v0, v1, :cond_6 if-nez v0, :cond_5 goto :goto_1 :cond_5 const/16 v1, 0xf .line 228 invoke-virtual {p0, v0, v1}, Lokhttp3/internal/http2/Hpack$Reader;->readInt(II)I move-result v0 add-int/lit8 v0, v0, -0x1 .line 229 invoke-direct {p0, v0}, Lokhttp3/internal/http2/Hpack$Reader;->readLiteralHeaderWithoutIndexingIndexedName(I)V goto/16 :goto_0 .line 224 :cond_6 :goto_1 invoke-direct {p0}, Lokhttp3/internal/http2/Hpack$Reader;->readLiteralHeaderWithoutIndexingNewName()V goto/16 :goto_0 .line 198 :cond_7 new-instance p0, Ljava/io/IOException; const-string v0, "index == 0" invoke-direct {p0, v0}, Ljava/io/IOException;->(Ljava/lang/String;)V check-cast p0, Ljava/lang/Throwable; throw p0 :cond_8 return-void .end method .method public final readInt(II)I .locals 2 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation and-int/2addr p1, p2 if-ge p1, p2, :cond_0 return p1 :cond_0 const/4 p1, 0x0 .line 353 :goto_0 invoke-direct {p0}, Lokhttp3/internal/http2/Hpack$Reader;->readByte()I move-result v0 and-int/lit16 v1, v0, 0x80 if-eqz v1, :cond_1 and-int/lit8 v0, v0, 0x7f shl-int/2addr v0, p1 add-int/2addr p2, v0 add-int/lit8 p1, p1, 0x7 goto :goto_0 :cond_1 shl-int p0, v0, p1 add-int/2addr p2, p0 return p2 .end method