AsyncSubject.smali 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836
  1. .class public final Lio/reactivex/subjects/AsyncSubject;
  2. .super Lio/reactivex/subjects/Subject;
  3. .source "AsyncSubject.java"
  4. # annotations
  5. .annotation system Ldalvik/annotation/MemberClasses;
  6. value = {
  7. Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  8. }
  9. .end annotation
  10. .annotation system Ldalvik/annotation/Signature;
  11. value = {
  12. "<T:",
  13. "Ljava/lang/Object;",
  14. ">",
  15. "Lio/reactivex/subjects/Subject<",
  16. "TT;>;"
  17. }
  18. .end annotation
  19. # static fields
  20. .field static final EMPTY:[Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  21. .field static final TERMINATED:[Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  22. # instance fields
  23. .field error:Ljava/lang/Throwable;
  24. .field final subscribers:Ljava/util/concurrent/atomic/AtomicReference;
  25. .annotation system Ldalvik/annotation/Signature;
  26. value = {
  27. "Ljava/util/concurrent/atomic/AtomicReference<",
  28. "[",
  29. "Lio/reactivex/subjects/AsyncSubject$AsyncDisposable<",
  30. "TT;>;>;"
  31. }
  32. .end annotation
  33. .end field
  34. .field value:Ljava/lang/Object;
  35. .annotation system Ldalvik/annotation/Signature;
  36. value = {
  37. "TT;"
  38. }
  39. .end annotation
  40. .end field
  41. # direct methods
  42. .method static constructor <clinit>()V
  43. .locals 2
  44. const/4 v0, 0x0
  45. .line 37
  46. new-array v1, v0, [Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  47. sput-object v1, Lio/reactivex/subjects/AsyncSubject;->EMPTY:[Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  48. .line 40
  49. new-array v0, v0, [Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  50. sput-object v0, Lio/reactivex/subjects/AsyncSubject;->TERMINATED:[Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  51. return-void
  52. .end method
  53. .method constructor <init>()V
  54. .locals 2
  55. .line 65
  56. invoke-direct {p0}, Lio/reactivex/subjects/Subject;-><init>()V
  57. .line 66
  58. new-instance v0, Ljava/util/concurrent/atomic/AtomicReference;
  59. sget-object v1, Lio/reactivex/subjects/AsyncSubject;->EMPTY:[Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  60. invoke-direct {v0, v1}, Ljava/util/concurrent/atomic/AtomicReference;-><init>(Ljava/lang/Object;)V
  61. iput-object v0, p0, Lio/reactivex/subjects/AsyncSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
  62. return-void
  63. .end method
  64. .method public static create()Lio/reactivex/subjects/AsyncSubject;
  65. .locals 1
  66. .annotation system Ldalvik/annotation/Signature;
  67. value = {
  68. "<T:",
  69. "Ljava/lang/Object;",
  70. ">()",
  71. "Lio/reactivex/subjects/AsyncSubject<",
  72. "TT;>;"
  73. }
  74. .end annotation
  75. .annotation runtime Lio/reactivex/annotations/CheckReturnValue;
  76. .end annotation
  77. .line 57
  78. new-instance v0, Lio/reactivex/subjects/AsyncSubject;
  79. invoke-direct {v0}, Lio/reactivex/subjects/AsyncSubject;-><init>()V
  80. return-object v0
  81. .end method
  82. # virtual methods
  83. .method add(Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;)Z
  84. .locals 4
  85. .annotation system Ldalvik/annotation/Signature;
  86. value = {
  87. "(",
  88. "Lio/reactivex/subjects/AsyncSubject$AsyncDisposable<",
  89. "TT;>;)Z"
  90. }
  91. .end annotation
  92. .line 185
  93. :cond_0
  94. iget-object v0, p0, Lio/reactivex/subjects/AsyncSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
  95. invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
  96. move-result-object v0
  97. check-cast v0, [Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  98. .line 186
  99. sget-object v1, Lio/reactivex/subjects/AsyncSubject;->TERMINATED:[Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  100. const/4 v2, 0x0
  101. if-ne v0, v1, :cond_1
  102. return v2
  103. .line 190
  104. :cond_1
  105. array-length v1, v0
  106. add-int/lit8 v3, v1, 0x1
  107. .line 192
  108. new-array v3, v3, [Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  109. .line 193
  110. invoke-static {v0, v2, v3, v2, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
  111. .line 194
  112. aput-object p1, v3, v1
  113. .line 196
  114. iget-object v1, p0, Lio/reactivex/subjects/AsyncSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
  115. invoke-virtual {v1, v0, v3}, Ljava/util/concurrent/atomic/AtomicReference;->compareAndSet(Ljava/lang/Object;Ljava/lang/Object;)Z
  116. move-result v0
  117. if-eqz v0, :cond_0
  118. const/4 p1, 0x1
  119. return p1
  120. .end method
  121. .method public getThrowable()Ljava/lang/Throwable;
  122. .locals 2
  123. .line 151
  124. iget-object v0, p0, Lio/reactivex/subjects/AsyncSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
  125. invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
  126. move-result-object v0
  127. sget-object v1, Lio/reactivex/subjects/AsyncSubject;->TERMINATED:[Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  128. if-ne v0, v1, :cond_0
  129. iget-object v0, p0, Lio/reactivex/subjects/AsyncSubject;->error:Ljava/lang/Throwable;
  130. goto :goto_0
  131. :cond_0
  132. const/4 v0, 0x0
  133. :goto_0
  134. return-object v0
  135. .end method
  136. .method public getValue()Ljava/lang/Object;
  137. .locals 2
  138. .annotation system Ldalvik/annotation/Signature;
  139. value = {
  140. "()TT;"
  141. }
  142. .end annotation
  143. .line 257
  144. iget-object v0, p0, Lio/reactivex/subjects/AsyncSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
  145. invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
  146. move-result-object v0
  147. sget-object v1, Lio/reactivex/subjects/AsyncSubject;->TERMINATED:[Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  148. if-ne v0, v1, :cond_0
  149. iget-object v0, p0, Lio/reactivex/subjects/AsyncSubject;->value:Ljava/lang/Object;
  150. goto :goto_0
  151. :cond_0
  152. const/4 v0, 0x0
  153. :goto_0
  154. return-object v0
  155. .end method
  156. .method public getValues()[Ljava/lang/Object;
  157. .locals 3
  158. .line 266
  159. invoke-virtual {p0}, Lio/reactivex/subjects/AsyncSubject;->getValue()Ljava/lang/Object;
  160. move-result-object v0
  161. const/4 v1, 0x0
  162. if-eqz v0, :cond_0
  163. const/4 v2, 0x1
  164. .line 267
  165. new-array v2, v2, [Ljava/lang/Object;
  166. aput-object v0, v2, v1
  167. goto :goto_0
  168. :cond_0
  169. new-array v2, v1, [Ljava/lang/Object;
  170. :goto_0
  171. return-object v2
  172. .end method
  173. .method public getValues([Ljava/lang/Object;)[Ljava/lang/Object;
  174. .locals 5
  175. .annotation system Ldalvik/annotation/Signature;
  176. value = {
  177. "([TT;)[TT;"
  178. }
  179. .end annotation
  180. .line 279
  181. invoke-virtual {p0}, Lio/reactivex/subjects/AsyncSubject;->getValue()Ljava/lang/Object;
  182. move-result-object v0
  183. const/4 v1, 0x0
  184. const/4 v2, 0x0
  185. if-nez v0, :cond_1
  186. .line 281
  187. array-length v0, p1
  188. if-eqz v0, :cond_0
  189. .line 282
  190. aput-object v1, p1, v2
  191. :cond_0
  192. return-object p1
  193. .line 286
  194. :cond_1
  195. array-length v3, p1
  196. const/4 v4, 0x1
  197. if-nez v3, :cond_2
  198. .line 287
  199. invoke-static {p1, v4}, Ljava/util/Arrays;->copyOf([Ljava/lang/Object;I)[Ljava/lang/Object;
  200. move-result-object p1
  201. .line 289
  202. :cond_2
  203. aput-object v0, p1, v2
  204. .line 290
  205. array-length v0, p1
  206. if-eq v0, v4, :cond_3
  207. .line 291
  208. aput-object v1, p1, v4
  209. :cond_3
  210. return-object p1
  211. .end method
  212. .method public hasComplete()Z
  213. .locals 2
  214. .line 146
  215. iget-object v0, p0, Lio/reactivex/subjects/AsyncSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
  216. invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
  217. move-result-object v0
  218. sget-object v1, Lio/reactivex/subjects/AsyncSubject;->TERMINATED:[Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  219. if-ne v0, v1, :cond_0
  220. iget-object v0, p0, Lio/reactivex/subjects/AsyncSubject;->error:Ljava/lang/Throwable;
  221. if-nez v0, :cond_0
  222. const/4 v0, 0x1
  223. goto :goto_0
  224. :cond_0
  225. const/4 v0, 0x0
  226. :goto_0
  227. return v0
  228. .end method
  229. .method public hasObservers()Z
  230. .locals 1
  231. .line 136
  232. iget-object v0, p0, Lio/reactivex/subjects/AsyncSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
  233. invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
  234. move-result-object v0
  235. check-cast v0, [Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  236. array-length v0, v0
  237. if-eqz v0, :cond_0
  238. const/4 v0, 0x1
  239. goto :goto_0
  240. :cond_0
  241. const/4 v0, 0x0
  242. :goto_0
  243. return v0
  244. .end method
  245. .method public hasThrowable()Z
  246. .locals 2
  247. .line 141
  248. iget-object v0, p0, Lio/reactivex/subjects/AsyncSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
  249. invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
  250. move-result-object v0
  251. sget-object v1, Lio/reactivex/subjects/AsyncSubject;->TERMINATED:[Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  252. if-ne v0, v1, :cond_0
  253. iget-object v0, p0, Lio/reactivex/subjects/AsyncSubject;->error:Ljava/lang/Throwable;
  254. if-eqz v0, :cond_0
  255. const/4 v0, 0x1
  256. goto :goto_0
  257. :cond_0
  258. const/4 v0, 0x0
  259. :goto_0
  260. return v0
  261. .end method
  262. .method public hasValue()Z
  263. .locals 2
  264. .line 248
  265. iget-object v0, p0, Lio/reactivex/subjects/AsyncSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
  266. invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
  267. move-result-object v0
  268. sget-object v1, Lio/reactivex/subjects/AsyncSubject;->TERMINATED:[Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  269. if-ne v0, v1, :cond_0
  270. iget-object v0, p0, Lio/reactivex/subjects/AsyncSubject;->value:Ljava/lang/Object;
  271. if-eqz v0, :cond_0
  272. const/4 v0, 0x1
  273. goto :goto_0
  274. :cond_0
  275. const/4 v0, 0x0
  276. :goto_0
  277. return v0
  278. .end method
  279. .method nullOnNext()V
  280. .locals 5
  281. const/4 v0, 0x0
  282. .line 90
  283. iput-object v0, p0, Lio/reactivex/subjects/AsyncSubject;->value:Ljava/lang/Object;
  284. .line 91
  285. new-instance v0, Ljava/lang/NullPointerException;
  286. const-string v1, "onNext called with null. Null values are generally not allowed in 2.x operators and sources."
  287. invoke-direct {v0, v1}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
  288. .line 92
  289. iput-object v0, p0, Lio/reactivex/subjects/AsyncSubject;->error:Ljava/lang/Throwable;
  290. .line 93
  291. iget-object v1, p0, Lio/reactivex/subjects/AsyncSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
  292. sget-object v2, Lio/reactivex/subjects/AsyncSubject;->TERMINATED:[Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  293. invoke-virtual {v1, v2}, Ljava/util/concurrent/atomic/AtomicReference;->getAndSet(Ljava/lang/Object;)Ljava/lang/Object;
  294. move-result-object v1
  295. check-cast v1, [Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  296. array-length v2, v1
  297. const/4 v3, 0x0
  298. :goto_0
  299. if-ge v3, v2, :cond_0
  300. aget-object v4, v1, v3
  301. .line 94
  302. invoke-virtual {v4, v0}, Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;->onError(Ljava/lang/Throwable;)V
  303. add-int/lit8 v3, v3, 0x1
  304. goto :goto_0
  305. :cond_0
  306. return-void
  307. .end method
  308. .method public onComplete()V
  309. .locals 5
  310. .line 118
  311. iget-object v0, p0, Lio/reactivex/subjects/AsyncSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
  312. invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
  313. move-result-object v0
  314. sget-object v1, Lio/reactivex/subjects/AsyncSubject;->TERMINATED:[Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  315. if-ne v0, v1, :cond_0
  316. return-void
  317. .line 121
  318. :cond_0
  319. iget-object v0, p0, Lio/reactivex/subjects/AsyncSubject;->value:Ljava/lang/Object;
  320. .line 122
  321. iget-object v2, p0, Lio/reactivex/subjects/AsyncSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
  322. invoke-virtual {v2, v1}, Ljava/util/concurrent/atomic/AtomicReference;->getAndSet(Ljava/lang/Object;)Ljava/lang/Object;
  323. move-result-object v1
  324. check-cast v1, [Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  325. const/4 v2, 0x0
  326. if-nez v0, :cond_1
  327. .line 124
  328. array-length v0, v1
  329. :goto_0
  330. if-ge v2, v0, :cond_2
  331. aget-object v3, v1, v2
  332. .line 125
  333. invoke-virtual {v3}, Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;->onComplete()V
  334. add-int/lit8 v2, v2, 0x1
  335. goto :goto_0
  336. .line 128
  337. :cond_1
  338. array-length v3, v1
  339. :goto_1
  340. if-ge v2, v3, :cond_2
  341. aget-object v4, v1, v2
  342. .line 129
  343. invoke-virtual {v4, v0}, Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;->complete(Ljava/lang/Object;)V
  344. add-int/lit8 v2, v2, 0x1
  345. goto :goto_1
  346. :cond_2
  347. return-void
  348. .end method
  349. .method public onError(Ljava/lang/Throwable;)V
  350. .locals 4
  351. if-nez p1, :cond_0
  352. .line 102
  353. new-instance p1, Ljava/lang/NullPointerException;
  354. const-string v0, "onError called with null. Null values are generally not allowed in 2.x operators and sources."
  355. invoke-direct {p1, v0}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
  356. .line 104
  357. :cond_0
  358. iget-object v0, p0, Lio/reactivex/subjects/AsyncSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
  359. invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
  360. move-result-object v0
  361. sget-object v1, Lio/reactivex/subjects/AsyncSubject;->TERMINATED:[Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  362. if-ne v0, v1, :cond_1
  363. .line 105
  364. invoke-static {p1}, Lio/reactivex/plugins/RxJavaPlugins;->onError(Ljava/lang/Throwable;)V
  365. return-void
  366. :cond_1
  367. const/4 v0, 0x0
  368. .line 108
  369. iput-object v0, p0, Lio/reactivex/subjects/AsyncSubject;->value:Ljava/lang/Object;
  370. .line 109
  371. iput-object p1, p0, Lio/reactivex/subjects/AsyncSubject;->error:Ljava/lang/Throwable;
  372. .line 110
  373. iget-object v0, p0, Lio/reactivex/subjects/AsyncSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
  374. invoke-virtual {v0, v1}, Ljava/util/concurrent/atomic/AtomicReference;->getAndSet(Ljava/lang/Object;)Ljava/lang/Object;
  375. move-result-object v0
  376. check-cast v0, [Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  377. array-length v1, v0
  378. const/4 v2, 0x0
  379. :goto_0
  380. if-ge v2, v1, :cond_2
  381. aget-object v3, v0, v2
  382. .line 111
  383. invoke-virtual {v3, p1}, Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;->onError(Ljava/lang/Throwable;)V
  384. add-int/lit8 v2, v2, 0x1
  385. goto :goto_0
  386. :cond_2
  387. return-void
  388. .end method
  389. .method public onNext(Ljava/lang/Object;)V
  390. .locals 2
  391. .annotation system Ldalvik/annotation/Signature;
  392. value = {
  393. "(TT;)V"
  394. }
  395. .end annotation
  396. .line 78
  397. iget-object v0, p0, Lio/reactivex/subjects/AsyncSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
  398. invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
  399. move-result-object v0
  400. sget-object v1, Lio/reactivex/subjects/AsyncSubject;->TERMINATED:[Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  401. if-ne v0, v1, :cond_0
  402. return-void
  403. :cond_0
  404. if-nez p1, :cond_1
  405. .line 82
  406. invoke-virtual {p0}, Lio/reactivex/subjects/AsyncSubject;->nullOnNext()V
  407. return-void
  408. .line 85
  409. :cond_1
  410. iput-object p1, p0, Lio/reactivex/subjects/AsyncSubject;->value:Ljava/lang/Object;
  411. return-void
  412. .end method
  413. .method public onSubscribe(Lio/reactivex/disposables/Disposable;)V
  414. .locals 2
  415. .line 71
  416. iget-object v0, p0, Lio/reactivex/subjects/AsyncSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
  417. invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
  418. move-result-object v0
  419. sget-object v1, Lio/reactivex/subjects/AsyncSubject;->TERMINATED:[Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  420. if-ne v0, v1, :cond_0
  421. .line 72
  422. invoke-interface {p1}, Lio/reactivex/disposables/Disposable;->dispose()V
  423. :cond_0
  424. return-void
  425. .end method
  426. .method remove(Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;)V
  427. .locals 6
  428. .annotation system Ldalvik/annotation/Signature;
  429. value = {
  430. "(",
  431. "Lio/reactivex/subjects/AsyncSubject$AsyncDisposable<",
  432. "TT;>;)V"
  433. }
  434. .end annotation
  435. .line 209
  436. :cond_0
  437. iget-object v0, p0, Lio/reactivex/subjects/AsyncSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
  438. invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
  439. move-result-object v0
  440. check-cast v0, [Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  441. .line 210
  442. array-length v1, v0
  443. if-nez v1, :cond_1
  444. return-void
  445. :cond_1
  446. const/4 v2, -0x1
  447. const/4 v3, 0x0
  448. const/4 v4, 0x0
  449. :goto_0
  450. if-ge v4, v1, :cond_3
  451. .line 217
  452. aget-object v5, v0, v4
  453. if-ne v5, p1, :cond_2
  454. move v2, v4
  455. goto :goto_1
  456. :cond_2
  457. add-int/lit8 v4, v4, 0x1
  458. goto :goto_0
  459. :cond_3
  460. :goto_1
  461. if-gez v2, :cond_4
  462. return-void
  463. :cond_4
  464. const/4 v4, 0x1
  465. if-ne v1, v4, :cond_5
  466. .line 230
  467. sget-object v1, Lio/reactivex/subjects/AsyncSubject;->EMPTY:[Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  468. goto :goto_2
  469. :cond_5
  470. add-int/lit8 v5, v1, -0x1
  471. .line 232
  472. new-array v5, v5, [Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  473. .line 233
  474. invoke-static {v0, v3, v5, v3, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
  475. add-int/lit8 v3, v2, 0x1
  476. sub-int/2addr v1, v2
  477. sub-int/2addr v1, v4
  478. .line 234
  479. invoke-static {v0, v3, v5, v2, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
  480. move-object v1, v5
  481. .line 236
  482. :goto_2
  483. iget-object v2, p0, Lio/reactivex/subjects/AsyncSubject;->subscribers:Ljava/util/concurrent/atomic/AtomicReference;
  484. invoke-virtual {v2, v0, v1}, Ljava/util/concurrent/atomic/AtomicReference;->compareAndSet(Ljava/lang/Object;Ljava/lang/Object;)Z
  485. move-result v0
  486. if-eqz v0, :cond_0
  487. return-void
  488. .end method
  489. .method protected subscribeActual(Lio/reactivex/Observer;)V
  490. .locals 2
  491. .annotation system Ldalvik/annotation/Signature;
  492. value = {
  493. "(",
  494. "Lio/reactivex/Observer<",
  495. "-TT;>;)V"
  496. }
  497. .end annotation
  498. .line 156
  499. new-instance v0, Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;
  500. invoke-direct {v0, p1, p0}, Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;-><init>(Lio/reactivex/Observer;Lio/reactivex/subjects/AsyncSubject;)V
  501. .line 157
  502. invoke-interface {p1, v0}, Lio/reactivex/Observer;->onSubscribe(Lio/reactivex/disposables/Disposable;)V
  503. .line 158
  504. invoke-virtual {p0, v0}, Lio/reactivex/subjects/AsyncSubject;->add(Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;)Z
  505. move-result v1
  506. if-eqz v1, :cond_0
  507. .line 159
  508. invoke-virtual {v0}, Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;->isDisposed()Z
  509. move-result p1
  510. if-eqz p1, :cond_3
  511. .line 160
  512. invoke-virtual {p0, v0}, Lio/reactivex/subjects/AsyncSubject;->remove(Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;)V
  513. goto :goto_0
  514. .line 163
  515. :cond_0
  516. iget-object v1, p0, Lio/reactivex/subjects/AsyncSubject;->error:Ljava/lang/Throwable;
  517. if-eqz v1, :cond_1
  518. .line 165
  519. invoke-interface {p1, v1}, Lio/reactivex/Observer;->onError(Ljava/lang/Throwable;)V
  520. goto :goto_0
  521. .line 167
  522. :cond_1
  523. iget-object p1, p0, Lio/reactivex/subjects/AsyncSubject;->value:Ljava/lang/Object;
  524. if-eqz p1, :cond_2
  525. .line 169
  526. invoke-virtual {v0, p1}, Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;->complete(Ljava/lang/Object;)V
  527. goto :goto_0
  528. .line 171
  529. :cond_2
  530. invoke-virtual {v0}, Lio/reactivex/subjects/AsyncSubject$AsyncDisposable;->onComplete()V
  531. :cond_3
  532. :goto_0
  533. return-void
  534. .end method