.class public Lorg/apache/http/impl/io/SessionInputBufferImpl; .super Ljava/lang/Object; .source "SessionInputBufferImpl.java" # interfaces .implements Lorg/apache/http/io/SessionInputBuffer; .implements Lorg/apache/http/io/BufferInfo; # instance fields .field private final buffer:[B .field private bufferlen:I .field private bufferpos:I .field private cbuf:Ljava/nio/CharBuffer; .field private final constraints:Lorg/apache/http/config/MessageConstraints; .field private final decoder:Ljava/nio/charset/CharsetDecoder; .field private instream:Ljava/io/InputStream; .field private final linebuffer:Lorg/apache/http/util/ByteArrayBuffer; .field private final metrics:Lorg/apache/http/impl/io/HttpTransportMetricsImpl; .field private final minChunkLimit:I # direct methods .method public constructor (Lorg/apache/http/impl/io/HttpTransportMetricsImpl;I)V .registers 9 const/4 v4, 0x0 const/4 v5, 0x0 move-object v0, p0 move-object v1, p1 move v2, p2 move v3, p2 .line 109 invoke-direct/range {v0 .. v5}, Lorg/apache/http/impl/io/SessionInputBufferImpl;->(Lorg/apache/http/impl/io/HttpTransportMetricsImpl;IILorg/apache/http/config/MessageConstraints;Ljava/nio/charset/CharsetDecoder;)V return-void .end method .method public constructor (Lorg/apache/http/impl/io/HttpTransportMetricsImpl;IILorg/apache/http/config/MessageConstraints;Ljava/nio/charset/CharsetDecoder;)V .registers 7 .line 93 invoke-direct {p0}, Ljava/lang/Object;->()V .line 94 const-string v0, "HTTP transport metrcis" invoke-static {p1, v0}, Lorg/apache/http/util/Args;->notNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; .line 95 const-string v0, "Buffer size" invoke-static {p2, v0}, Lorg/apache/http/util/Args;->positive(ILjava/lang/String;)I .line 96 iput-object p1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->metrics:Lorg/apache/http/impl/io/HttpTransportMetricsImpl; .line 97 new-array p1, p2, [B iput-object p1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->buffer:[B const/4 p1, 0x0 .line 98 iput p1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferpos:I .line 99 iput p1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferlen:I if-ltz p3, :cond_1b goto :goto_1d :cond_1b const/16 p3, 0x200 .line 100 :goto_1d iput p3, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->minChunkLimit:I if-eqz p4, :cond_22 goto :goto_24 .line 101 :cond_22 sget-object p4, Lorg/apache/http/config/MessageConstraints;->DEFAULT:Lorg/apache/http/config/MessageConstraints; :goto_24 iput-object p4, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->constraints:Lorg/apache/http/config/MessageConstraints; .line 102 new-instance p1, Lorg/apache/http/util/ByteArrayBuffer; invoke-direct {p1, p2}, Lorg/apache/http/util/ByteArrayBuffer;->(I)V iput-object p1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->linebuffer:Lorg/apache/http/util/ByteArrayBuffer; .line 103 iput-object p5, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->decoder:Ljava/nio/charset/CharsetDecoder; return-void .end method .method private appendDecoded(Lorg/apache/http/util/CharArrayBuffer;Ljava/nio/ByteBuffer;)I .registers 7 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 355 invoke-virtual {p2}, Ljava/nio/ByteBuffer;->hasRemaining()Z move-result v0 const/4 v1, 0x0 if-nez v0, :cond_8 return v1 .line 358 :cond_8 iget-object v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->cbuf:Ljava/nio/CharBuffer; if-nez v0, :cond_14 const/16 v0, 0x400 .line 359 invoke-static {v0}, Ljava/nio/CharBuffer;->allocate(I)Ljava/nio/CharBuffer; move-result-object v0 iput-object v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->cbuf:Ljava/nio/CharBuffer; .line 361 :cond_14 iget-object v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->decoder:Ljava/nio/charset/CharsetDecoder; invoke-virtual {v0}, Ljava/nio/charset/CharsetDecoder;->reset()Ljava/nio/charset/CharsetDecoder; .line 363 :goto_19 invoke-virtual {p2}, Ljava/nio/ByteBuffer;->hasRemaining()Z move-result v0 if-eqz v0, :cond_2e .line 364 iget-object v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->decoder:Ljava/nio/charset/CharsetDecoder; iget-object v2, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->cbuf:Ljava/nio/CharBuffer; const/4 v3, 0x1 invoke-virtual {v0, p2, v2, v3}, Ljava/nio/charset/CharsetDecoder;->decode(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;Z)Ljava/nio/charset/CoderResult; move-result-object v0 .line 365 invoke-direct {p0, v0, p1, p2}, Lorg/apache/http/impl/io/SessionInputBufferImpl;->handleDecodingResult(Ljava/nio/charset/CoderResult;Lorg/apache/http/util/CharArrayBuffer;Ljava/nio/ByteBuffer;)I move-result v0 add-int/2addr v1, v0 goto :goto_19 .line 367 :cond_2e iget-object v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->decoder:Ljava/nio/charset/CharsetDecoder; iget-object v2, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->cbuf:Ljava/nio/CharBuffer; invoke-virtual {v0, v2}, Ljava/nio/charset/CharsetDecoder;->flush(Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult; move-result-object v0 .line 368 invoke-direct {p0, v0, p1, p2}, Lorg/apache/http/impl/io/SessionInputBufferImpl;->handleDecodingResult(Ljava/nio/charset/CoderResult;Lorg/apache/http/util/CharArrayBuffer;Ljava/nio/ByteBuffer;)I move-result p1 add-int/2addr v1, p1 .line 369 iget-object p1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->cbuf:Ljava/nio/CharBuffer; invoke-virtual {p1}, Ljava/nio/CharBuffer;->clear()Ljava/nio/Buffer; return v1 .end method .method private handleDecodingResult(Ljava/nio/charset/CoderResult;Lorg/apache/http/util/CharArrayBuffer;Ljava/nio/ByteBuffer;)I .registers 4 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 377 invoke-virtual {p1}, Ljava/nio/charset/CoderResult;->isError()Z move-result p3 if-eqz p3, :cond_9 .line 378 invoke-virtual {p1}, Ljava/nio/charset/CoderResult;->throwException()V .line 380 :cond_9 iget-object p1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->cbuf:Ljava/nio/CharBuffer; invoke-virtual {p1}, Ljava/nio/CharBuffer;->flip()Ljava/nio/Buffer; .line 381 iget-object p1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->cbuf:Ljava/nio/CharBuffer; invoke-virtual {p1}, Ljava/nio/CharBuffer;->remaining()I move-result p1 .line 382 :goto_14 iget-object p3, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->cbuf:Ljava/nio/CharBuffer; invoke-virtual {p3}, Ljava/nio/CharBuffer;->hasRemaining()Z move-result p3 if-eqz p3, :cond_26 .line 383 iget-object p3, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->cbuf:Ljava/nio/CharBuffer; invoke-virtual {p3}, Ljava/nio/CharBuffer;->get()C move-result p3 invoke-virtual {p2, p3}, Lorg/apache/http/util/CharArrayBuffer;->append(C)V goto :goto_14 .line 385 :cond_26 iget-object p2, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->cbuf:Ljava/nio/CharBuffer; invoke-virtual {p2}, Ljava/nio/CharBuffer;->compact()Ljava/nio/CharBuffer; return p1 .end method .method private lineFromLineBuffer(Lorg/apache/http/util/CharArrayBuffer;)I .registers 5 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 311 iget-object v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->linebuffer:Lorg/apache/http/util/ByteArrayBuffer; invoke-virtual {v0}, Lorg/apache/http/util/ByteArrayBuffer;->length()I move-result v0 if-lez v0, :cond_26 .line 313 iget-object v1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->linebuffer:Lorg/apache/http/util/ByteArrayBuffer; add-int/lit8 v2, v0, -0x1 invoke-virtual {v1, v2}, Lorg/apache/http/util/ByteArrayBuffer;->byteAt(I)I move-result v1 const/16 v2, 0xa if-ne v1, v2, :cond_16 add-int/lit8 v0, v0, -0x1 :cond_16 if-lez v0, :cond_26 .line 318 iget-object v1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->linebuffer:Lorg/apache/http/util/ByteArrayBuffer; add-int/lit8 v2, v0, -0x1 invoke-virtual {v1, v2}, Lorg/apache/http/util/ByteArrayBuffer;->byteAt(I)I move-result v1 const/16 v2, 0xd if-ne v1, v2, :cond_26 add-int/lit8 v0, v0, -0x1 .line 323 :cond_26 iget-object v1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->decoder:Ljava/nio/charset/CharsetDecoder; const/4 v2, 0x0 if-nez v1, :cond_31 .line 324 iget-object v1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->linebuffer:Lorg/apache/http/util/ByteArrayBuffer; invoke-virtual {p1, v1, v2, v0}, Lorg/apache/http/util/CharArrayBuffer;->append(Lorg/apache/http/util/ByteArrayBuffer;II)V goto :goto_3f .line 326 :cond_31 iget-object v1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->linebuffer:Lorg/apache/http/util/ByteArrayBuffer; invoke-virtual {v1}, Lorg/apache/http/util/ByteArrayBuffer;->buffer()[B move-result-object v1 invoke-static {v1, v2, v0}, Ljava/nio/ByteBuffer;->wrap([BII)Ljava/nio/ByteBuffer; move-result-object v0 .line 327 invoke-direct {p0, p1, v0}, Lorg/apache/http/impl/io/SessionInputBufferImpl;->appendDecoded(Lorg/apache/http/util/CharArrayBuffer;Ljava/nio/ByteBuffer;)I move-result v0 .line 329 :goto_3f iget-object p1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->linebuffer:Lorg/apache/http/util/ByteArrayBuffer; invoke-virtual {p1}, Lorg/apache/http/util/ByteArrayBuffer;->clear()V return v0 .end method .method private lineFromReadBuffer(Lorg/apache/http/util/CharArrayBuffer;I)I .registers 6 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 336 iget v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferpos:I add-int/lit8 v1, p2, 0x1 .line 338 iput v1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferpos:I if-le p2, v0, :cond_14 .line 339 iget-object v1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->buffer:[B add-int/lit8 v2, p2, -0x1 aget-byte v1, v1, v2 const/16 v2, 0xd if-ne v1, v2, :cond_14 add-int/lit8 p2, p2, -0x1 :cond_14 sub-int/2addr p2, v0 .line 344 iget-object v1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->decoder:Ljava/nio/charset/CharsetDecoder; if-nez v1, :cond_1f .line 345 iget-object v1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->buffer:[B invoke-virtual {p1, v1, v0, p2}, Lorg/apache/http/util/CharArrayBuffer;->append([BII)V goto :goto_29 .line 347 :cond_1f iget-object v1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->buffer:[B invoke-static {v1, v0, p2}, Ljava/nio/ByteBuffer;->wrap([BII)Ljava/nio/ByteBuffer; move-result-object p2 .line 348 invoke-direct {p0, p1, p2}, Lorg/apache/http/impl/io/SessionInputBufferImpl;->appendDecoded(Lorg/apache/http/util/CharArrayBuffer;Ljava/nio/ByteBuffer;)I move-result p2 :goto_29 return p2 .end method .method private streamRead([BII)I .registers 6 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 136 iget-object v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->instream:Ljava/io/InputStream; const-string v1, "Input stream" invoke-static {v0, v1}, Lorg/apache/http/util/Asserts;->notNull(Ljava/lang/Object;Ljava/lang/String;)V .line 137 iget-object v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->instream:Ljava/io/InputStream; invoke-virtual {v0, p1, p2, p3}, Ljava/io/InputStream;->read([BII)I move-result p1 return p1 .end method # virtual methods .method public available()I .registers 3 .line 132 invoke-virtual {p0}, Lorg/apache/http/impl/io/SessionInputBufferImpl;->capacity()I move-result v0 invoke-virtual {p0}, Lorg/apache/http/impl/io/SessionInputBufferImpl;->length()I move-result v1 sub-int/2addr v0, v1 return v0 .end method .method public bind(Ljava/io/InputStream;)V .registers 2 .line 113 iput-object p1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->instream:Ljava/io/InputStream; return-void .end method .method public capacity()I .registers 2 .line 122 iget-object v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->buffer:[B array-length v0, v0 return v0 .end method .method public clear()V .registers 2 const/4 v0, 0x0 .line 168 iput v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferpos:I .line 169 iput v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferlen:I return-void .end method .method public fillBuffer()I .registers 5 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 142 iget v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferpos:I if-lez v0, :cond_13 .line 143 iget v1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferlen:I sub-int/2addr v1, v0 const/4 v2, 0x0 if-lez v1, :cond_f .line 145 iget-object v3, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->buffer:[B invoke-static {v3, v0, v3, v2, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V .line 147 :cond_f iput v2, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferpos:I .line 148 iput v1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferlen:I .line 151 :cond_13 iget v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferlen:I .line 152 iget-object v1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->buffer:[B array-length v2, v1 sub-int/2addr v2, v0 .line 153 invoke-direct {p0, v1, v0, v2}, Lorg/apache/http/impl/io/SessionInputBufferImpl;->streamRead([BII)I move-result v1 const/4 v2, -0x1 if-ne v1, v2, :cond_21 return v2 :cond_21 add-int/2addr v0, v1 .line 157 iput v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferlen:I .line 158 iget-object v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->metrics:Lorg/apache/http/impl/io/HttpTransportMetricsImpl; int-to-long v2, v1 invoke-virtual {v0, v2, v3}, Lorg/apache/http/impl/io/HttpTransportMetricsImpl;->incrementBytesTransferred(J)V return v1 .end method .method public getMetrics()Lorg/apache/http/io/HttpTransportMetrics; .registers 2 .line 407 iget-object v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->metrics:Lorg/apache/http/impl/io/HttpTransportMetricsImpl; return-object v0 .end method .method public hasBufferedData()Z .registers 3 .line 164 iget v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferpos:I iget v1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferlen:I if-ge v0, v1, :cond_8 const/4 v0, 0x1 goto :goto_9 :cond_8 const/4 v0, 0x0 :goto_9 return v0 .end method .method public isBound()Z .registers 2 .line 117 iget-object v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->instream:Ljava/io/InputStream; if-eqz v0, :cond_6 const/4 v0, 0x1 goto :goto_7 :cond_6 const/4 v0, 0x0 :goto_7 return v0 .end method .method public isDataAvailable(I)Z .registers 2 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 402 invoke-virtual {p0}, Lorg/apache/http/impl/io/SessionInputBufferImpl;->hasBufferedData()Z move-result p1 return p1 .end method .method public length()I .registers 3 .line 127 iget v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferlen:I iget v1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferpos:I sub-int/2addr v0, v1 return v0 .end method .method public read()I .registers 4 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 175 :cond_0 invoke-virtual {p0}, Lorg/apache/http/impl/io/SessionInputBufferImpl;->hasBufferedData()Z move-result v0 if-nez v0, :cond_e .line 176 invoke-virtual {p0}, Lorg/apache/http/impl/io/SessionInputBufferImpl;->fillBuffer()I move-result v0 const/4 v1, -0x1 if-ne v0, v1, :cond_0 return v1 .line 181 :cond_e iget-object v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->buffer:[B iget v1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferpos:I add-int/lit8 v2, v1, 0x1 iput v2, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferpos:I aget-byte v0, v0, v1 and-int/lit16 v0, v0, 0xff return v0 .end method .method public read([B)I .registers 4 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation const/4 v0, 0x0 if-nez p1, :cond_4 return v0 .line 223 :cond_4 array-length v1, p1 invoke-virtual {p0, p1, v0, v1}, Lorg/apache/http/impl/io/SessionInputBufferImpl;->read([BII)I move-result p1 return p1 .end method .method public read([BII)I .registers 6 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation if-nez p1, :cond_4 const/4 p1, 0x0 return p1 .line 189 :cond_4 invoke-virtual {p0}, Lorg/apache/http/impl/io/SessionInputBufferImpl;->hasBufferedData()Z move-result v0 if-eqz v0, :cond_20 .line 190 iget v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferlen:I iget v1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferpos:I sub-int/2addr v0, v1 invoke-static {p3, v0}, Ljava/lang/Math;->min(II)I move-result p3 .line 191 iget-object v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->buffer:[B iget v1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferpos:I invoke-static {v0, v1, p1, p2, p3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V .line 192 iget p1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferpos:I add-int/2addr p1, p3 iput p1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferpos:I return p3 .line 197 :cond_20 iget v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->minChunkLimit:I if-le p3, v0, :cond_31 .line 198 invoke-direct {p0, p1, p2, p3}, Lorg/apache/http/impl/io/SessionInputBufferImpl;->streamRead([BII)I move-result p1 if-lez p1, :cond_30 .line 200 iget-object p2, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->metrics:Lorg/apache/http/impl/io/HttpTransportMetricsImpl; int-to-long v0, p1 invoke-virtual {p2, v0, v1}, Lorg/apache/http/impl/io/HttpTransportMetricsImpl;->incrementBytesTransferred(J)V :cond_30 return p1 .line 205 :cond_31 invoke-virtual {p0}, Lorg/apache/http/impl/io/SessionInputBufferImpl;->hasBufferedData()Z move-result v0 if-nez v0, :cond_3f .line 206 invoke-virtual {p0}, Lorg/apache/http/impl/io/SessionInputBufferImpl;->fillBuffer()I move-result v0 const/4 v1, -0x1 if-ne v0, v1, :cond_31 return v1 .line 211 :cond_3f iget v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferlen:I iget v1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferpos:I sub-int/2addr v0, v1 invoke-static {p3, v0}, Ljava/lang/Math;->min(II)I move-result p3 .line 212 iget-object v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->buffer:[B iget v1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferpos:I invoke-static {v0, v1, p1, p2, p3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V .line 213 iget p1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferpos:I add-int/2addr p1, p3 iput p1, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferpos:I return p3 .end method .method public readLine(Lorg/apache/http/util/CharArrayBuffer;)I .registers 10 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 243 const-string v0, "Char array buffer" invoke-static {p1, v0}, Lorg/apache/http/util/Args;->notNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; .line 244 iget-object v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->constraints:Lorg/apache/http/config/MessageConstraints; invoke-virtual {v0}, Lorg/apache/http/config/MessageConstraints;->getMaxLineLength()I move-result v0 const/4 v1, 0x0 const/4 v2, 0x1 move v3, v1 :cond_e :goto_e const/4 v4, -0x1 if-eqz v2, :cond_7e .line 250 iget v5, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferpos:I :goto_13 iget v6, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferlen:I if-ge v5, v6, :cond_23 .line 251 iget-object v6, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->buffer:[B aget-byte v6, v6, v5 const/16 v7, 0xa if-ne v6, v7, :cond_20 goto :goto_24 :cond_20 add-int/lit8 v5, v5, 0x1 goto :goto_13 :cond_23 move v5, v4 :goto_24 if-lez v0, :cond_41 .line 258 iget-object v6, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->linebuffer:Lorg/apache/http/util/ByteArrayBuffer; invoke-virtual {v6}, Lorg/apache/http/util/ByteArrayBuffer;->length()I move-result v6 if-ltz v5, :cond_30 move v7, v5 goto :goto_32 :cond_30 iget v7, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferlen:I :goto_32 add-int/2addr v6, v7 iget v7, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferpos:I sub-int/2addr v6, v7 if-ge v6, v0, :cond_39 goto :goto_41 .line 261 :cond_39 new-instance p1, Lorg/apache/http/MessageConstraintException; const-string v0, "Maximum line length limit exceeded" invoke-direct {p1, v0}, Lorg/apache/http/MessageConstraintException;->(Ljava/lang/String;)V throw p1 :cond_41 :goto_41 if-eq v5, v4, :cond_61 .line 267 iget-object v2, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->linebuffer:Lorg/apache/http/util/ByteArrayBuffer; invoke-virtual {v2}, Lorg/apache/http/util/ByteArrayBuffer;->isEmpty()Z move-result v2 if-eqz v2, :cond_50 .line 269 invoke-direct {p0, p1, v5}, Lorg/apache/http/impl/io/SessionInputBufferImpl;->lineFromReadBuffer(Lorg/apache/http/util/CharArrayBuffer;I)I move-result p1 return p1 :cond_50 add-int/lit8 v5, v5, 0x1 .line 272 iget v2, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferpos:I sub-int v4, v5, v2 .line 273 iget-object v6, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->linebuffer:Lorg/apache/http/util/ByteArrayBuffer; iget-object v7, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->buffer:[B invoke-virtual {v6, v7, v2, v4}, Lorg/apache/http/util/ByteArrayBuffer;->append([BII)V .line 274 iput v5, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferpos:I :goto_5f move v2, v1 goto :goto_e .line 277 :cond_61 invoke-virtual {p0}, Lorg/apache/http/impl/io/SessionInputBufferImpl;->hasBufferedData()Z move-result v3 if-eqz v3, :cond_77 .line 278 iget v3, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferlen:I iget v5, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferpos:I sub-int/2addr v3, v5 .line 279 iget-object v6, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->linebuffer:Lorg/apache/http/util/ByteArrayBuffer; iget-object v7, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->buffer:[B invoke-virtual {v6, v7, v5, v3}, Lorg/apache/http/util/ByteArrayBuffer;->append([BII)V .line 280 iget v3, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferlen:I iput v3, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->bufferpos:I .line 282 :cond_77 invoke-virtual {p0}, Lorg/apache/http/impl/io/SessionInputBufferImpl;->fillBuffer()I move-result v3 if-ne v3, v4, :cond_e goto :goto_5f :cond_7e if-ne v3, v4, :cond_89 .line 288 iget-object v0, p0, Lorg/apache/http/impl/io/SessionInputBufferImpl;->linebuffer:Lorg/apache/http/util/ByteArrayBuffer; invoke-virtual {v0}, Lorg/apache/http/util/ByteArrayBuffer;->isEmpty()Z move-result v0 if-eqz v0, :cond_89 return v4 .line 292 :cond_89 invoke-direct {p0, p1}, Lorg/apache/http/impl/io/SessionInputBufferImpl;->lineFromLineBuffer(Lorg/apache/http/util/CharArrayBuffer;)I move-result p1 return p1 .end method .method public readLine()Ljava/lang/String; .registers 4 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 391 new-instance v0, Lorg/apache/http/util/CharArrayBuffer; const/16 v1, 0x40 invoke-direct {v0, v1}, Lorg/apache/http/util/CharArrayBuffer;->(I)V .line 392 invoke-virtual {p0, v0}, Lorg/apache/http/impl/io/SessionInputBufferImpl;->readLine(Lorg/apache/http/util/CharArrayBuffer;)I move-result v1 const/4 v2, -0x1 if-eq v1, v2, :cond_13 .line 394 invoke-virtual {v0}, Lorg/apache/http/util/CharArrayBuffer;->toString()Ljava/lang/String; move-result-object v0 return-object v0 :cond_13 const/4 v0, 0x0 return-object v0 .end method