.class public final Lcom/bumptech/glide/load/data/BufferedOutputStream; .super Ljava/io/OutputStream; .source "BufferedOutputStream.java" # instance fields .field private arrayPool:Lcom/bumptech/glide/load/engine/bitmap_recycle/ArrayPool; .field private buffer:[B .field private index:I .field private final out:Ljava/io/OutputStream; # direct methods .method public constructor (Ljava/io/OutputStream;Lcom/bumptech/glide/load/engine/bitmap_recycle/ArrayPool;)V .registers 4 const/high16 v0, 0x10000 .line 21 invoke-direct {p0, p1, p2, v0}, Lcom/bumptech/glide/load/data/BufferedOutputStream;->(Ljava/io/OutputStream;Lcom/bumptech/glide/load/engine/bitmap_recycle/ArrayPool;I)V return-void .end method .method constructor (Ljava/io/OutputStream;Lcom/bumptech/glide/load/engine/bitmap_recycle/ArrayPool;I)V .registers 4 .line 25 invoke-direct {p0}, Ljava/io/OutputStream;->()V .line 26 iput-object p1, p0, Lcom/bumptech/glide/load/data/BufferedOutputStream;->out:Ljava/io/OutputStream; .line 27 iput-object p2, p0, Lcom/bumptech/glide/load/data/BufferedOutputStream;->arrayPool:Lcom/bumptech/glide/load/engine/bitmap_recycle/ArrayPool; .line 28 const-class p1, [B invoke-interface {p2, p3, p1}, Lcom/bumptech/glide/load/engine/bitmap_recycle/ArrayPool;->get(ILjava/lang/Class;)Ljava/lang/Object; move-result-object p1 check-cast p1, [B iput-object p1, p0, Lcom/bumptech/glide/load/data/BufferedOutputStream;->buffer:[B return-void .end method .method private flushBuffer()V .registers 5 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 74 iget v0, p0, Lcom/bumptech/glide/load/data/BufferedOutputStream;->index:I if-lez v0, :cond_e .line 75 iget-object v1, p0, Lcom/bumptech/glide/load/data/BufferedOutputStream;->out:Ljava/io/OutputStream; iget-object v2, p0, Lcom/bumptech/glide/load/data/BufferedOutputStream;->buffer:[B const/4 v3, 0x0 invoke-virtual {v1, v2, v3, v0}, Ljava/io/OutputStream;->write([BII)V .line 76 iput v3, p0, Lcom/bumptech/glide/load/data/BufferedOutputStream;->index:I :cond_e return-void .end method .method private maybeFlushBuffer()V .registers 3 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 81 iget v0, p0, Lcom/bumptech/glide/load/data/BufferedOutputStream;->index:I iget-object v1, p0, Lcom/bumptech/glide/load/data/BufferedOutputStream;->buffer:[B array-length v1, v1 if-ne v0, v1, :cond_a .line 82 invoke-direct {p0}, Lcom/bumptech/glide/load/data/BufferedOutputStream;->flushBuffer()V :cond_a return-void .end method .method private release()V .registers 3 .line 97 iget-object v0, p0, Lcom/bumptech/glide/load/data/BufferedOutputStream;->buffer:[B if-eqz v0, :cond_c .line 98 iget-object v1, p0, Lcom/bumptech/glide/load/data/BufferedOutputStream;->arrayPool:Lcom/bumptech/glide/load/engine/bitmap_recycle/ArrayPool; invoke-interface {v1, v0}, Lcom/bumptech/glide/load/engine/bitmap_recycle/ArrayPool;->put(Ljava/lang/Object;)V const/4 v0, 0x0 .line 99 iput-object v0, p0, Lcom/bumptech/glide/load/data/BufferedOutputStream;->buffer:[B :cond_c return-void .end method # virtual methods .method public close()V .registers 3 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 89 :try_start_0 invoke-virtual {p0}, Lcom/bumptech/glide/load/data/BufferedOutputStream;->flush()V :try_end_3 .catchall {:try_start_0 .. :try_end_3} :catchall_c .line 91 iget-object v0, p0, Lcom/bumptech/glide/load/data/BufferedOutputStream;->out:Ljava/io/OutputStream; invoke-virtual {v0}, Ljava/io/OutputStream;->close()V .line 93 invoke-direct {p0}, Lcom/bumptech/glide/load/data/BufferedOutputStream;->release()V return-void :catchall_c move-exception v0 .line 91 iget-object v1, p0, Lcom/bumptech/glide/load/data/BufferedOutputStream;->out:Ljava/io/OutputStream; invoke-virtual {v1}, Ljava/io/OutputStream;->close()V throw v0 .end method .method public flush()V .registers 2 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 69 invoke-direct {p0}, Lcom/bumptech/glide/load/data/BufferedOutputStream;->flushBuffer()V .line 70 iget-object v0, p0, Lcom/bumptech/glide/load/data/BufferedOutputStream;->out:Ljava/io/OutputStream; invoke-virtual {v0}, Ljava/io/OutputStream;->flush()V return-void .end method .method public write(I)V .registers 5 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 33 iget-object v0, p0, Lcom/bumptech/glide/load/data/BufferedOutputStream;->buffer:[B iget v1, p0, Lcom/bumptech/glide/load/data/BufferedOutputStream;->index:I add-int/lit8 v2, v1, 0x1 iput v2, p0, Lcom/bumptech/glide/load/data/BufferedOutputStream;->index:I int-to-byte p1, p1 aput-byte p1, v0, v1 .line 34 invoke-direct {p0}, Lcom/bumptech/glide/load/data/BufferedOutputStream;->maybeFlushBuffer()V return-void .end method .method public write([B)V .registers 4 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation const/4 v0, 0x0 .line 39 array-length v1, p1 invoke-virtual {p0, p1, v0, v1}, Lcom/bumptech/glide/load/data/BufferedOutputStream;->write([BII)V return-void .end method .method public write([BII)V .registers 9 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation const/4 v0, 0x0 :cond_1 sub-int v1, p3, v0 add-int v2, p2, v0 .line 50 iget v3, p0, Lcom/bumptech/glide/load/data/BufferedOutputStream;->index:I if-nez v3, :cond_14 iget-object v4, p0, Lcom/bumptech/glide/load/data/BufferedOutputStream;->buffer:[B array-length v4, v4 if-lt v1, v4, :cond_14 .line 51 iget-object p2, p0, Lcom/bumptech/glide/load/data/BufferedOutputStream;->out:Ljava/io/OutputStream; invoke-virtual {p2, p1, v2, v1}, Ljava/io/OutputStream;->write([BII)V return-void .line 55 :cond_14 iget-object v4, p0, Lcom/bumptech/glide/load/data/BufferedOutputStream;->buffer:[B array-length v4, v4 sub-int/2addr v4, v3 .line 56 invoke-static {v1, v4}, Ljava/lang/Math;->min(II)I move-result v1 .line 58 iget-object v3, p0, Lcom/bumptech/glide/load/data/BufferedOutputStream;->buffer:[B iget v4, p0, Lcom/bumptech/glide/load/data/BufferedOutputStream;->index:I invoke-static {p1, v2, v3, v4, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V .line 60 iget v2, p0, Lcom/bumptech/glide/load/data/BufferedOutputStream;->index:I add-int/2addr v2, v1 iput v2, p0, Lcom/bumptech/glide/load/data/BufferedOutputStream;->index:I add-int/2addr v0, v1 .line 63 invoke-direct {p0}, Lcom/bumptech/glide/load/data/BufferedOutputStream;->maybeFlushBuffer()V if-lt v0, p3, :cond_1 return-void .end method