1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051 |
- .class public final Lio/reactivex/subjects/BehaviorSubject;
- .super Lio/reactivex/subjects/Subject;
- .source "BehaviorSubject.java"
- # annotations
- .annotation system Ldalvik/annotation/MemberClasses;
- value = {
- Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- }
- .end annotation
- .annotation system Ldalvik/annotation/Signature;
- value = {
- "<T:",
- "Ljava/lang/Object;",
- ">",
- "Lio/reactivex/subjects/Subject<",
- "TT;>;"
- }
- .end annotation
- # static fields
- .field static final EMPTY:[Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- .field private static final EMPTY_ARRAY:[Ljava/lang/Object;
- .field static final TERMINATED:[Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- # instance fields
- .field done:Z
- .field index:J
- .field final lock:Ljava/util/concurrent/locks/ReadWriteLock;
- .field final readLock:Ljava/util/concurrent/locks/Lock;
- .field final subscribers:Ljava/util/concurrent/atomic/AtomicReference;
- .annotation system Ldalvik/annotation/Signature;
- value = {
- "Ljava/util/concurrent/atomic/AtomicReference<",
- "[",
- "Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable<",
- "TT;>;>;"
- }
- .end annotation
- .end field
- .field final value:Ljava/util/concurrent/atomic/AtomicReference;
- .annotation system Ldalvik/annotation/Signature;
- value = {
- "Ljava/util/concurrent/atomic/AtomicReference<",
- "Ljava/lang/Object;",
- ">;"
- }
- .end annotation
- .end field
- .field final writeLock:Ljava/util/concurrent/locks/Lock;
- # direct methods
- .method static constructor <clinit>()V
- .locals 2
- const/4 v0, 0x0
- .line 74
- new-array v1, v0, [Ljava/lang/Object;
- sput-object v1, Lio/reactivex/subjects/BehaviorSubject;->EMPTY_ARRAY:[Ljava/lang/Object;
- .line 81
- new-array v1, v0, [Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- sput-object v1, Lio/reactivex/subjects/BehaviorSubject;->EMPTY:[Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- .line 84
- new-array v0, v0, [Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- sput-object v0, Lio/reactivex/subjects/BehaviorSubject;->TERMINATED:[Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- return-void
- .end method
- .method constructor <init>()V
- .locals 2
- .line 126
- invoke-direct {p0}, Lio/reactivex/subjects/Subject;-><init>()V
- .line 127
- new-instance v0, Ljava/util/concurrent/locks/ReentrantReadWriteLock;
- invoke-direct {v0}, Ljava/util/concurrent/locks/ReentrantReadWriteLock;-><init>()V
- iput-object v0, p0, Lio/reactivex/subjects/BehaviorSubject;->lock:Ljava/util/concurrent/locks/ReadWriteLock;
- .line 128
- iget-object v0, p0, Lio/reactivex/subjects/BehaviorSubject;->lock:Ljava/util/concurrent/locks/ReadWriteLock;
- invoke-interface {v0}, Ljava/util/concurrent/locks/ReadWriteLock;->readLock()Ljava/util/concurrent/locks/Lock;
- move-result-object v0
- iput-object v0, p0, Lio/reactivex/subjects/BehaviorSubject;->readLock:Ljava/util/concurrent/locks/Lock;
- .line 129
- iget-object v0, p0, Lio/reactivex/subjects/BehaviorSubject;->lock:Ljava/util/concurrent/locks/ReadWriteLock;
- invoke-interface {v0}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock;
- move-result-object v0
- iput-object v0, p0, Lio/reactivex/subjects/BehaviorSubject;->writeLock:Ljava/util/concurrent/locks/Lock;
- .line 130
- new-instance v0, Ljava/util/concurrent/atomic/AtomicReference;
- sget-object v1, Lio/reactivex/subjects/BehaviorSubject;->EMPTY:[Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- invoke-direct {v0, v1}, Ljava/util/concurrent/atomic/AtomicReference;-><init>(Ljava/lang/Object;)V
- iput-object v0, p0, Lio/reactivex/subjects/BehaviorSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
- .line 131
- new-instance v0, Ljava/util/concurrent/atomic/AtomicReference;
- invoke-direct {v0}, Ljava/util/concurrent/atomic/AtomicReference;-><init>()V
- iput-object v0, p0, Lio/reactivex/subjects/BehaviorSubject;->value:Ljava/util/concurrent/atomic/AtomicReference;
- return-void
- .end method
- .method constructor <init>(Ljava/lang/Object;)V
- .locals 2
- .annotation system Ldalvik/annotation/Signature;
- value = {
- "(TT;)V"
- }
- .end annotation
- .line 141
- invoke-direct {p0}, Lio/reactivex/subjects/BehaviorSubject;-><init>()V
- .line 142
- iget-object v0, p0, Lio/reactivex/subjects/BehaviorSubject;->value:Ljava/util/concurrent/atomic/AtomicReference;
- const-string v1, "defaultValue is null"
- invoke-static {p1, v1}, Lio/reactivex/internal/functions/ObjectHelper;->requireNonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
- move-result-object p1
- invoke-virtual {v0, p1}, Ljava/util/concurrent/atomic/AtomicReference;->lazySet(Ljava/lang/Object;)V
- return-void
- .end method
- .method public static create()Lio/reactivex/subjects/BehaviorSubject;
- .locals 1
- .annotation system Ldalvik/annotation/Signature;
- value = {
- "<T:",
- "Ljava/lang/Object;",
- ">()",
- "Lio/reactivex/subjects/BehaviorSubject<",
- "TT;>;"
- }
- .end annotation
- .annotation runtime Lio/reactivex/annotations/CheckReturnValue;
- .end annotation
- .line 102
- new-instance v0, Lio/reactivex/subjects/BehaviorSubject;
- invoke-direct {v0}, Lio/reactivex/subjects/BehaviorSubject;-><init>()V
- return-object v0
- .end method
- .method public static createDefault(Ljava/lang/Object;)Lio/reactivex/subjects/BehaviorSubject;
- .locals 1
- .annotation system Ldalvik/annotation/Signature;
- value = {
- "<T:",
- "Ljava/lang/Object;",
- ">(TT;)",
- "Lio/reactivex/subjects/BehaviorSubject<",
- "TT;>;"
- }
- .end annotation
- .annotation runtime Lio/reactivex/annotations/CheckReturnValue;
- .end annotation
- .line 118
- new-instance v0, Lio/reactivex/subjects/BehaviorSubject;
- invoke-direct {v0, p0}, Lio/reactivex/subjects/BehaviorSubject;-><init>(Ljava/lang/Object;)V
- return-object v0
- .end method
- # virtual methods
- .method add(Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;)Z
- .locals 4
- .annotation system Ldalvik/annotation/Signature;
- value = {
- "(",
- "Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable<",
- "TT;>;)Z"
- }
- .end annotation
- .line 318
- :cond_0
- iget-object v0, p0, Lio/reactivex/subjects/BehaviorSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
- invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
- move-result-object v0
- check-cast v0, [Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- .line 319
- sget-object v1, Lio/reactivex/subjects/BehaviorSubject;->TERMINATED:[Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- const/4 v2, 0x0
- if-ne v0, v1, :cond_1
- return v2
- .line 322
- :cond_1
- array-length v1, v0
- add-int/lit8 v3, v1, 0x1
- .line 324
- new-array v3, v3, [Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- .line 325
- invoke-static {v0, v2, v3, v2, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
- .line 326
- aput-object p1, v3, v1
- .line 327
- iget-object v1, p0, Lio/reactivex/subjects/BehaviorSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
- invoke-virtual {v1, v0, v3}, Ljava/util/concurrent/atomic/AtomicReference;->compareAndSet(Ljava/lang/Object;Ljava/lang/Object;)Z
- move-result v0
- if-eqz v0, :cond_0
- const/4 p1, 0x1
- return p1
- .end method
- .method public getThrowable()Ljava/lang/Throwable;
- .locals 2
- .line 228
- iget-object v0, p0, Lio/reactivex/subjects/BehaviorSubject;->value:Ljava/util/concurrent/atomic/AtomicReference;
- invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
- move-result-object v0
- .line 229
- invoke-static {v0}, Lio/reactivex/internal/util/NotificationLite;->isError(Ljava/lang/Object;)Z
- move-result v1
- if-eqz v1, :cond_0
- .line 230
- invoke-static {v0}, Lio/reactivex/internal/util/NotificationLite;->getError(Ljava/lang/Object;)Ljava/lang/Throwable;
- move-result-object v0
- return-object v0
- :cond_0
- const/4 v0, 0x0
- return-object v0
- .end method
- .method public getValue()Ljava/lang/Object;
- .locals 2
- .annotation system Ldalvik/annotation/Signature;
- value = {
- "()TT;"
- }
- .end annotation
- .line 241
- iget-object v0, p0, Lio/reactivex/subjects/BehaviorSubject;->value:Ljava/util/concurrent/atomic/AtomicReference;
- invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
- move-result-object v0
- .line 242
- invoke-static {v0}, Lio/reactivex/internal/util/NotificationLite;->isComplete(Ljava/lang/Object;)Z
- move-result v1
- if-nez v1, :cond_1
- invoke-static {v0}, Lio/reactivex/internal/util/NotificationLite;->isError(Ljava/lang/Object;)Z
- move-result v1
- if-eqz v1, :cond_0
- goto :goto_0
- .line 245
- :cond_0
- invoke-static {v0}, Lio/reactivex/internal/util/NotificationLite;->getValue(Ljava/lang/Object;)Ljava/lang/Object;
- move-result-object v0
- return-object v0
- :cond_1
- :goto_0
- const/4 v0, 0x0
- return-object v0
- .end method
- .method public getValues()[Ljava/lang/Object;
- .locals 2
- .line 255
- sget-object v0, Lio/reactivex/subjects/BehaviorSubject;->EMPTY_ARRAY:[Ljava/lang/Object;
- check-cast v0, [Ljava/lang/Object;
- .line 256
- invoke-virtual {p0, v0}, Lio/reactivex/subjects/BehaviorSubject;->getValues([Ljava/lang/Object;)[Ljava/lang/Object;
- move-result-object v0
- .line 257
- sget-object v1, Lio/reactivex/subjects/BehaviorSubject;->EMPTY_ARRAY:[Ljava/lang/Object;
- if-ne v0, v1, :cond_0
- const/4 v0, 0x0
- .line 258
- new-array v0, v0, [Ljava/lang/Object;
- :cond_0
- return-object v0
- .end method
- .method public getValues([Ljava/lang/Object;)[Ljava/lang/Object;
- .locals 5
- .annotation system Ldalvik/annotation/Signature;
- value = {
- "([TT;)[TT;"
- }
- .end annotation
- .line 274
- iget-object v0, p0, Lio/reactivex/subjects/BehaviorSubject;->value:Ljava/util/concurrent/atomic/AtomicReference;
- invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
- move-result-object v0
- const/4 v1, 0x0
- const/4 v2, 0x0
- if-eqz v0, :cond_3
- .line 275
- invoke-static {v0}, Lio/reactivex/internal/util/NotificationLite;->isComplete(Ljava/lang/Object;)Z
- move-result v3
- if-nez v3, :cond_3
- invoke-static {v0}, Lio/reactivex/internal/util/NotificationLite;->isError(Ljava/lang/Object;)Z
- move-result v3
- if-eqz v3, :cond_0
- goto :goto_1
- .line 281
- :cond_0
- invoke-static {v0}, Lio/reactivex/internal/util/NotificationLite;->getValue(Ljava/lang/Object;)Ljava/lang/Object;
- move-result-object v0
- .line 282
- array-length v3, p1
- const/4 v4, 0x1
- if-eqz v3, :cond_1
- .line 283
- aput-object v0, p1, v2
- .line 284
- array-length v0, p1
- if-eq v0, v4, :cond_2
- .line 285
- aput-object v1, p1, v4
- goto :goto_0
- .line 288
- :cond_1
- invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
- move-result-object p1
- invoke-virtual {p1}, Ljava/lang/Class;->getComponentType()Ljava/lang/Class;
- move-result-object p1
- invoke-static {p1, v4}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;I)Ljava/lang/Object;
- move-result-object p1
- check-cast p1, [Ljava/lang/Object;
- check-cast p1, [Ljava/lang/Object;
- .line 289
- aput-object v0, p1, v2
- :cond_2
- :goto_0
- return-object p1
- .line 276
- :cond_3
- :goto_1
- array-length v0, p1
- if-eqz v0, :cond_4
- .line 277
- aput-object v1, p1, v2
- :cond_4
- return-object p1
- .end method
- .method public hasComplete()Z
- .locals 1
- .line 296
- iget-object v0, p0, Lio/reactivex/subjects/BehaviorSubject;->value:Ljava/util/concurrent/atomic/AtomicReference;
- invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
- move-result-object v0
- .line 297
- invoke-static {v0}, Lio/reactivex/internal/util/NotificationLite;->isComplete(Ljava/lang/Object;)Z
- move-result v0
- return v0
- .end method
- .method public hasObservers()Z
- .locals 1
- .line 218
- iget-object v0, p0, Lio/reactivex/subjects/BehaviorSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
- invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
- move-result-object v0
- check-cast v0, [Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- array-length v0, v0
- if-eqz v0, :cond_0
- const/4 v0, 0x1
- goto :goto_0
- :cond_0
- const/4 v0, 0x0
- :goto_0
- return v0
- .end method
- .method public hasThrowable()Z
- .locals 1
- .line 302
- iget-object v0, p0, Lio/reactivex/subjects/BehaviorSubject;->value:Ljava/util/concurrent/atomic/AtomicReference;
- invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
- move-result-object v0
- .line 303
- invoke-static {v0}, Lio/reactivex/internal/util/NotificationLite;->isError(Ljava/lang/Object;)Z
- move-result v0
- return v0
- .end method
- .method public hasValue()Z
- .locals 2
- .line 312
- iget-object v0, p0, Lio/reactivex/subjects/BehaviorSubject;->value:Ljava/util/concurrent/atomic/AtomicReference;
- invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
- move-result-object v0
- if-eqz v0, :cond_0
- .line 313
- invoke-static {v0}, Lio/reactivex/internal/util/NotificationLite;->isComplete(Ljava/lang/Object;)Z
- move-result v1
- if-nez v1, :cond_0
- invoke-static {v0}, Lio/reactivex/internal/util/NotificationLite;->isError(Ljava/lang/Object;)Z
- move-result v0
- if-nez v0, :cond_0
- const/4 v0, 0x1
- goto :goto_0
- :cond_0
- const/4 v0, 0x0
- :goto_0
- return v0
- .end method
- .method public onComplete()V
- .locals 7
- .line 206
- iget-boolean v0, p0, Lio/reactivex/subjects/BehaviorSubject;->done:Z
- if-eqz v0, :cond_0
- return-void
- :cond_0
- const/4 v0, 0x1
- .line 209
- iput-boolean v0, p0, Lio/reactivex/subjects/BehaviorSubject;->done:Z
- .line 210
- invoke-static {}, Lio/reactivex/internal/util/NotificationLite;->complete()Ljava/lang/Object;
- move-result-object v0
- .line 211
- invoke-virtual {p0, v0}, Lio/reactivex/subjects/BehaviorSubject;->terminate(Ljava/lang/Object;)[Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- move-result-object v1
- array-length v2, v1
- const/4 v3, 0x0
- :goto_0
- if-ge v3, v2, :cond_1
- aget-object v4, v1, v3
- .line 212
- iget-wide v5, p0, Lio/reactivex/subjects/BehaviorSubject;->index:J
- invoke-virtual {v4, v0, v5, v6}, Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;->emitNext(Ljava/lang/Object;J)V
- add-int/lit8 v3, v3, 0x1
- goto :goto_0
- :cond_1
- return-void
- .end method
- .method public onError(Ljava/lang/Throwable;)V
- .locals 6
- if-nez p1, :cond_0
- .line 191
- new-instance p1, Ljava/lang/NullPointerException;
- const-string v0, "onError called with null. Null values are generally not allowed in 2.x operators and sources."
- invoke-direct {p1, v0}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
- .line 193
- :cond_0
- iget-boolean v0, p0, Lio/reactivex/subjects/BehaviorSubject;->done:Z
- if-eqz v0, :cond_1
- .line 194
- invoke-static {p1}, Lio/reactivex/plugins/RxJavaPlugins;->onError(Ljava/lang/Throwable;)V
- return-void
- :cond_1
- const/4 v0, 0x1
- .line 197
- iput-boolean v0, p0, Lio/reactivex/subjects/BehaviorSubject;->done:Z
- .line 198
- invoke-static {p1}, Lio/reactivex/internal/util/NotificationLite;->error(Ljava/lang/Throwable;)Ljava/lang/Object;
- move-result-object p1
- .line 199
- invoke-virtual {p0, p1}, Lio/reactivex/subjects/BehaviorSubject;->terminate(Ljava/lang/Object;)[Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- move-result-object v0
- array-length v1, v0
- const/4 v2, 0x0
- :goto_0
- if-ge v2, v1, :cond_2
- aget-object v3, v0, v2
- .line 200
- iget-wide v4, p0, Lio/reactivex/subjects/BehaviorSubject;->index:J
- invoke-virtual {v3, p1, v4, v5}, Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;->emitNext(Ljava/lang/Object;J)V
- add-int/lit8 v2, v2, 0x1
- goto :goto_0
- :cond_2
- return-void
- .end method
- .method public onNext(Ljava/lang/Object;)V
- .locals 6
- .annotation system Ldalvik/annotation/Signature;
- value = {
- "(TT;)V"
- }
- .end annotation
- if-nez p1, :cond_0
- .line 175
- new-instance p1, Ljava/lang/NullPointerException;
- const-string v0, "onNext called with null. Null values are generally not allowed in 2.x operators and sources."
- invoke-direct {p1, v0}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
- invoke-virtual {p0, p1}, Lio/reactivex/subjects/BehaviorSubject;->onError(Ljava/lang/Throwable;)V
- return-void
- .line 178
- :cond_0
- iget-boolean v0, p0, Lio/reactivex/subjects/BehaviorSubject;->done:Z
- if-eqz v0, :cond_1
- return-void
- .line 181
- :cond_1
- invoke-static {p1}, Lio/reactivex/internal/util/NotificationLite;->next(Ljava/lang/Object;)Ljava/lang/Object;
- move-result-object p1
- .line 182
- invoke-virtual {p0, p1}, Lio/reactivex/subjects/BehaviorSubject;->setCurrent(Ljava/lang/Object;)V
- .line 183
- iget-object v0, p0, Lio/reactivex/subjects/BehaviorSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
- invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
- move-result-object v0
- check-cast v0, [Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- array-length v1, v0
- const/4 v2, 0x0
- :goto_0
- if-ge v2, v1, :cond_2
- aget-object v3, v0, v2
- .line 184
- iget-wide v4, p0, Lio/reactivex/subjects/BehaviorSubject;->index:J
- invoke-virtual {v3, p1, v4, v5}, Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;->emitNext(Ljava/lang/Object;J)V
- add-int/lit8 v2, v2, 0x1
- goto :goto_0
- :cond_2
- return-void
- .end method
- .method public onSubscribe(Lio/reactivex/disposables/Disposable;)V
- .locals 1
- .line 167
- iget-boolean v0, p0, Lio/reactivex/subjects/BehaviorSubject;->done:Z
- if-eqz v0, :cond_0
- .line 168
- invoke-interface {p1}, Lio/reactivex/disposables/Disposable;->dispose()V
- :cond_0
- return-void
- .end method
- .method remove(Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;)V
- .locals 6
- .annotation system Ldalvik/annotation/Signature;
- value = {
- "(",
- "Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable<",
- "TT;>;)V"
- }
- .end annotation
- .line 336
- :cond_0
- iget-object v0, p0, Lio/reactivex/subjects/BehaviorSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
- invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
- move-result-object v0
- check-cast v0, [Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- .line 337
- sget-object v1, Lio/reactivex/subjects/BehaviorSubject;->TERMINATED:[Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- if-eq v0, v1, :cond_6
- sget-object v1, Lio/reactivex/subjects/BehaviorSubject;->EMPTY:[Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- if-ne v0, v1, :cond_1
- goto :goto_3
- .line 340
- :cond_1
- array-length v1, v0
- const/4 v2, -0x1
- const/4 v3, 0x0
- const/4 v4, 0x0
- :goto_0
- if-ge v4, v1, :cond_3
- .line 343
- aget-object v5, v0, v4
- if-ne v5, p1, :cond_2
- move v2, v4
- goto :goto_1
- :cond_2
- add-int/lit8 v4, v4, 0x1
- goto :goto_0
- :cond_3
- :goto_1
- if-gez v2, :cond_4
- return-void
- :cond_4
- const/4 v4, 0x1
- if-ne v1, v4, :cond_5
- .line 354
- sget-object v1, Lio/reactivex/subjects/BehaviorSubject;->EMPTY:[Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- goto :goto_2
- :cond_5
- add-int/lit8 v5, v1, -0x1
- .line 356
- new-array v5, v5, [Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- .line 357
- invoke-static {v0, v3, v5, v3, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
- add-int/lit8 v3, v2, 0x1
- sub-int/2addr v1, v2
- sub-int/2addr v1, v4
- .line 358
- invoke-static {v0, v3, v5, v2, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
- move-object v1, v5
- .line 360
- :goto_2
- iget-object v2, p0, Lio/reactivex/subjects/BehaviorSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
- invoke-virtual {v2, v0, v1}, Ljava/util/concurrent/atomic/AtomicReference;->compareAndSet(Ljava/lang/Object;Ljava/lang/Object;)Z
- move-result v0
- if-eqz v0, :cond_0
- :cond_6
- :goto_3
- return-void
- .end method
- .method setCurrent(Ljava/lang/Object;)V
- .locals 4
- .line 382
- iget-object v0, p0, Lio/reactivex/subjects/BehaviorSubject;->writeLock:Ljava/util/concurrent/locks/Lock;
- invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->lock()V
- .line 384
- :try_start_0
- iget-wide v0, p0, Lio/reactivex/subjects/BehaviorSubject;->index:J
- const-wide/16 v2, 0x1
- add-long/2addr v0, v2
- iput-wide v0, p0, Lio/reactivex/subjects/BehaviorSubject;->index:J
- .line 385
- iget-object v0, p0, Lio/reactivex/subjects/BehaviorSubject;->value:Ljava/util/concurrent/atomic/AtomicReference;
- invoke-virtual {v0, p1}, Ljava/util/concurrent/atomic/AtomicReference;->lazySet(Ljava/lang/Object;)V
- :try_end_0
- .catchall {:try_start_0 .. :try_end_0} :catchall_0
- .line 387
- iget-object p1, p0, Lio/reactivex/subjects/BehaviorSubject;->writeLock:Ljava/util/concurrent/locks/Lock;
- invoke-interface {p1}, Ljava/util/concurrent/locks/Lock;->unlock()V
- return-void
- :catchall_0
- move-exception p1
- iget-object v0, p0, Lio/reactivex/subjects/BehaviorSubject;->writeLock:Ljava/util/concurrent/locks/Lock;
- invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->unlock()V
- throw p1
- .end method
- .method protected subscribeActual(Lio/reactivex/Observer;)V
- .locals 2
- .annotation system Ldalvik/annotation/Signature;
- value = {
- "(",
- "Lio/reactivex/Observer<",
- "-TT;>;)V"
- }
- .end annotation
- .line 147
- new-instance v0, Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- invoke-direct {v0, p1, p0}, Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;-><init>(Lio/reactivex/Observer;Lio/reactivex/subjects/BehaviorSubject;)V
- .line 148
- invoke-interface {p1, v0}, Lio/reactivex/Observer;->onSubscribe(Lio/reactivex/disposables/Disposable;)V
- .line 149
- invoke-virtual {p0, v0}, Lio/reactivex/subjects/BehaviorSubject;->add(Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;)Z
- move-result v1
- if-eqz v1, :cond_1
- .line 150
- iget-boolean p1, v0, Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;->cancelled:Z
- if-eqz p1, :cond_0
- .line 151
- invoke-virtual {p0, v0}, Lio/reactivex/subjects/BehaviorSubject;->remove(Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;)V
- goto :goto_0
- .line 153
- :cond_0
- invoke-virtual {v0}, Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;->emitFirst()V
- goto :goto_0
- .line 156
- :cond_1
- iget-object v0, p0, Lio/reactivex/subjects/BehaviorSubject;->value:Ljava/util/concurrent/atomic/AtomicReference;
- invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
- move-result-object v0
- .line 157
- invoke-static {v0}, Lio/reactivex/internal/util/NotificationLite;->isComplete(Ljava/lang/Object;)Z
- move-result v1
- if-eqz v1, :cond_2
- .line 158
- invoke-interface {p1}, Lio/reactivex/Observer;->onComplete()V
- goto :goto_0
- .line 160
- :cond_2
- invoke-static {v0}, Lio/reactivex/internal/util/NotificationLite;->getError(Ljava/lang/Object;)Ljava/lang/Throwable;
- move-result-object v0
- invoke-interface {p1, v0}, Lio/reactivex/Observer;->onError(Ljava/lang/Throwable;)V
- :goto_0
- return-void
- .end method
- .method subscriberCount()I
- .locals 1
- .line 223
- iget-object v0, p0, Lio/reactivex/subjects/BehaviorSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
- invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
- move-result-object v0
- check-cast v0, [Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- array-length v0, v0
- return v0
- .end method
- .method terminate(Ljava/lang/Object;)[Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- .locals 2
- .annotation system Ldalvik/annotation/Signature;
- value = {
- "(",
- "Ljava/lang/Object;",
- ")[",
- "Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable<",
- "TT;>;"
- }
- .end annotation
- .line 369
- iget-object v0, p0, Lio/reactivex/subjects/BehaviorSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
- invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
- move-result-object v0
- check-cast v0, [Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- .line 370
- sget-object v1, Lio/reactivex/subjects/BehaviorSubject;->TERMINATED:[Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- if-eq v0, v1, :cond_0
- .line 371
- iget-object v0, p0, Lio/reactivex/subjects/BehaviorSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
- invoke-virtual {v0, v1}, Ljava/util/concurrent/atomic/AtomicReference;->getAndSet(Ljava/lang/Object;)Ljava/lang/Object;
- move-result-object v0
- check-cast v0, [Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- .line 372
- sget-object v1, Lio/reactivex/subjects/BehaviorSubject;->TERMINATED:[Lio/reactivex/subjects/BehaviorSubject$BehaviorDisposable;
- if-eq v0, v1, :cond_0
- .line 374
- invoke-virtual {p0, p1}, Lio/reactivex/subjects/BehaviorSubject;->setCurrent(Ljava/lang/Object;)V
- :cond_0
- return-object v0
- .end method
|