.class final Lcom/google/common/io/MultiInputStream; .super Ljava/io/InputStream; .source "MultiInputStream.java" # annotations .annotation build Lcom/google/common/annotations/GwtIncompatible; .end annotation .annotation runtime Lcom/google/common/io/ElementTypesAreNonnullByDefault; .end annotation # instance fields .field private in:Ljava/io/InputStream; .annotation runtime Ljavax/annotation/CheckForNull; .end annotation .end field .field private it:Ljava/util/Iterator; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/Iterator<", "+", "Lcom/google/common/io/ByteSource;", ">;" } .end annotation .end field # direct methods .method public constructor (Ljava/util/Iterator;)V .locals 0 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/util/Iterator<", "+", "Lcom/google/common/io/ByteSource;", ">;)V" } .end annotation .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 1 invoke-direct {p0}, Ljava/io/InputStream;->()V .line 2 invoke-static {p1}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; move-result-object p1 check-cast p1, Ljava/util/Iterator; iput-object p1, p0, Lcom/google/common/io/MultiInputStream;->it:Ljava/util/Iterator; .line 3 invoke-direct {p0}, Lcom/google/common/io/MultiInputStream;->advance()V return-void .end method .method private advance()V .locals 1 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 1 invoke-virtual {p0}, Lcom/google/common/io/MultiInputStream;->close()V .line 2 iget-object v0, p0, Lcom/google/common/io/MultiInputStream;->it:Ljava/util/Iterator; invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z move-result v0 if-eqz v0, :cond_0 .line 3 iget-object v0, p0, Lcom/google/common/io/MultiInputStream;->it:Ljava/util/Iterator; invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v0 check-cast v0, Lcom/google/common/io/ByteSource; invoke-virtual {v0}, Lcom/google/common/io/ByteSource;->openStream()Ljava/io/InputStream; move-result-object v0 iput-object v0, p0, Lcom/google/common/io/MultiInputStream;->in:Ljava/io/InputStream; :cond_0 return-void .end method # virtual methods .method public available()I .locals 1 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 1 iget-object v0, p0, Lcom/google/common/io/MultiInputStream;->in:Ljava/io/InputStream; if-nez v0, :cond_0 const/4 v0, 0x0 return v0 .line 2 :cond_0 invoke-virtual {v0}, Ljava/io/InputStream;->available()I move-result v0 return v0 .end method .method public close()V .locals 2 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 1 iget-object v0, p0, Lcom/google/common/io/MultiInputStream;->in:Ljava/io/InputStream; if-eqz v0, :cond_0 const/4 v1, 0x0 .line 2 :try_start_0 invoke-virtual {v0}, Ljava/io/InputStream;->close()V :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 .line 3 iput-object v1, p0, Lcom/google/common/io/MultiInputStream;->in:Ljava/io/InputStream; goto :goto_0 :catchall_0 move-exception v0 iput-object v1, p0, Lcom/google/common/io/MultiInputStream;->in:Ljava/io/InputStream; .line 4 throw v0 :cond_0 :goto_0 return-void .end method .method public markSupported()Z .locals 1 const/4 v0, 0x0 return v0 .end method .method public read()I .locals 2 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 1 :goto_0 iget-object v0, p0, Lcom/google/common/io/MultiInputStream;->in:Ljava/io/InputStream; const/4 v1, -0x1 if-eqz v0, :cond_1 .line 2 invoke-virtual {v0}, Ljava/io/InputStream;->read()I move-result v0 if-eq v0, v1, :cond_0 return v0 .line 3 :cond_0 invoke-direct {p0}, Lcom/google/common/io/MultiInputStream;->advance()V goto :goto_0 :cond_1 return v1 .end method .method public read([BII)I .locals 2 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 4 invoke-static {p1}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; .line 5 :goto_0 iget-object v0, p0, Lcom/google/common/io/MultiInputStream;->in:Ljava/io/InputStream; const/4 v1, -0x1 if-eqz v0, :cond_1 .line 6 invoke-virtual {v0, p1, p2, p3}, Ljava/io/InputStream;->read([BII)I move-result v0 if-eq v0, v1, :cond_0 return v0 .line 7 :cond_0 invoke-direct {p0}, Lcom/google/common/io/MultiInputStream;->advance()V goto :goto_0 :cond_1 return v1 .end method .method public skip(J)J .locals 5 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 1 iget-object v0, p0, Lcom/google/common/io/MultiInputStream;->in:Ljava/io/InputStream; const-wide/16 v1, 0x0 if-eqz v0, :cond_3 cmp-long v3, p1, v1 if-gtz v3, :cond_0 goto :goto_0 .line 2 :cond_0 invoke-virtual {v0, p1, p2}, Ljava/io/InputStream;->skip(J)J move-result-wide v3 cmp-long v0, v3, v1 if-eqz v0, :cond_1 return-wide v3 .line 3 :cond_1 invoke-virtual {p0}, Lcom/google/common/io/MultiInputStream;->read()I move-result v0 const/4 v3, -0x1 if-ne v0, v3, :cond_2 return-wide v1 .line 4 :cond_2 iget-object v0, p0, Lcom/google/common/io/MultiInputStream;->in:Ljava/io/InputStream; const-wide/16 v1, 0x1 sub-long/2addr p1, v1 invoke-virtual {v0, p1, p2}, Ljava/io/InputStream;->skip(J)J move-result-wide p1 add-long/2addr p1, v1 return-wide p1 :cond_3 :goto_0 return-wide v1 .end method