ObservableRefCount$DisposeConsumer.smali
.class final Lio/reactivex/internal/operators/observable/ObservableRefCount$DisposeConsumer;
.super Ljava/lang/Object;
.source "ObservableRefCount.java"
# interfaces
.implements Lio/reactivex/functions/Consumer;
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lio/reactivex/internal/operators/observable/ObservableRefCount;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x10
name = "DisposeConsumer"
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/Object;",
"Lio/reactivex/functions/Consumer<",
"Lio/reactivex/disposables/Disposable;",
">;"
}
.end annotation
# instance fields
.field private final observer:Lio/reactivex/Observer;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lio/reactivex/Observer<",
"-TT;>;"
}
.end annotation
.end field
.field final synthetic this$0:Lio/reactivex/internal/operators/observable/ObservableRefCount;
.field private final writeLocked:Ljava/util/concurrent/atomic/AtomicBoolean;
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method constructor <init>(Lio/reactivex/internal/operators/observable/ObservableRefCount;Lio/reactivex/Observer;Ljava/util/concurrent/atomic/AtomicBoolean;)V
.registers 4
.param p1, "this$0" # Lio/reactivex/internal/operators/observable/ObservableRefCount;
.param p3, "writeLocked" # Ljava/util/concurrent/atomic/AtomicBoolean;
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lio/reactivex/Observer<",
"-TT;>;",
"Ljava/util/concurrent/atomic/AtomicBoolean;",
")V"
}
.end annotation
.line 183
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableRefCount$DisposeConsumer;, "Lio/reactivex/internal/operators/observable/ObservableRefCount<TT;>.DisposeConsumer;"
.local p2, "observer":Lio/reactivex/Observer;, "Lio/reactivex/Observer<-TT;>;"
iput-object p1, p0, Lio/reactivex/internal/operators/observable/ObservableRefCount$DisposeConsumer;->this$0:Lio/reactivex/internal/operators/observable/ObservableRefCount;
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 184
iput-object p2, p0, Lio/reactivex/internal/operators/observable/ObservableRefCount$DisposeConsumer;->observer:Lio/reactivex/Observer;
.line 185
iput-object p3, p0, Lio/reactivex/internal/operators/observable/ObservableRefCount$DisposeConsumer;->writeLocked:Ljava/util/concurrent/atomic/AtomicBoolean;
.line 186
return-void
.end method
# virtual methods
.method public accept(Lio/reactivex/disposables/Disposable;)V
.registers 6
.param p1, "subscription" # Lio/reactivex/disposables/Disposable;
.line 191
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableRefCount$DisposeConsumer;, "Lio/reactivex/internal/operators/observable/ObservableRefCount<TT;>.DisposeConsumer;"
const/4 v0, 0x0
:try_start_1
iget-object v1, p0, Lio/reactivex/internal/operators/observable/ObservableRefCount$DisposeConsumer;->this$0:Lio/reactivex/internal/operators/observable/ObservableRefCount;
iget-object v1, v1, Lio/reactivex/internal/operators/observable/ObservableRefCount;->baseDisposable:Lio/reactivex/disposables/CompositeDisposable;
invoke-virtual {v1, p1}, Lio/reactivex/disposables/CompositeDisposable;->add(Lio/reactivex/disposables/Disposable;)Z
.line 193
iget-object v1, p0, Lio/reactivex/internal/operators/observable/ObservableRefCount$DisposeConsumer;->this$0:Lio/reactivex/internal/operators/observable/ObservableRefCount;
iget-object v2, p0, Lio/reactivex/internal/operators/observable/ObservableRefCount$DisposeConsumer;->observer:Lio/reactivex/Observer;
iget-object v3, p0, Lio/reactivex/internal/operators/observable/ObservableRefCount$DisposeConsumer;->this$0:Lio/reactivex/internal/operators/observable/ObservableRefCount;
iget-object v3, v3, Lio/reactivex/internal/operators/observable/ObservableRefCount;->baseDisposable:Lio/reactivex/disposables/CompositeDisposable;
invoke-virtual {v1, v2, v3}, Lio/reactivex/internal/operators/observable/ObservableRefCount;->doSubscribe(Lio/reactivex/Observer;Lio/reactivex/disposables/CompositeDisposable;)V
:try_end_13
.catchall {:try_start_1 .. :try_end_13} :catchall_21
.line 196
iget-object v1, p0, Lio/reactivex/internal/operators/observable/ObservableRefCount$DisposeConsumer;->this$0:Lio/reactivex/internal/operators/observable/ObservableRefCount;
iget-object v1, v1, Lio/reactivex/internal/operators/observable/ObservableRefCount;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 197
iget-object v1, p0, Lio/reactivex/internal/operators/observable/ObservableRefCount$DisposeConsumer;->writeLocked:Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-virtual {v1, v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V
.line 198
nop
.line 199
return-void
.line 196
:catchall_21
move-exception v1
iget-object v2, p0, Lio/reactivex/internal/operators/observable/ObservableRefCount$DisposeConsumer;->this$0:Lio/reactivex/internal/operators/observable/ObservableRefCount;
iget-object v2, v2, Lio/reactivex/internal/operators/observable/ObservableRefCount;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v2}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 197
iget-object v2, p0, Lio/reactivex/internal/operators/observable/ObservableRefCount$DisposeConsumer;->writeLocked:Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-virtual {v2, v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V
throw v1
.end method
.method public bridge synthetic accept(Ljava/lang/Object;)V
.registers 2
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
.line 179
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableRefCount$DisposeConsumer;, "Lio/reactivex/internal/operators/observable/ObservableRefCount<TT;>.DisposeConsumer;"
check-cast p1, Lio/reactivex/disposables/Disposable;
invoke-virtual {p0, p1}, Lio/reactivex/internal/operators/observable/ObservableRefCount$DisposeConsumer;->accept(Lio/reactivex/disposables/Disposable;)V
return-void
.end method