TestSubscriber.smali 30 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111
  1. .class public Lio/reactivex/subscribers/TestSubscriber;
  2. .super Lio/reactivex/observers/BaseTestConsumer;
  3. .source "TestSubscriber.java"
  4. # interfaces
  5. .implements Lorg/reactivestreams/Subscriber;
  6. .implements Lorg/reactivestreams/Subscription;
  7. .implements Lio/reactivex/disposables/Disposable;
  8. # annotations
  9. .annotation system Ldalvik/annotation/MemberClasses;
  10. value = {
  11. Lio/reactivex/subscribers/TestSubscriber$EmptySubscriber;
  12. }
  13. .end annotation
  14. .annotation system Ldalvik/annotation/Signature;
  15. value = {
  16. "<T:",
  17. "Ljava/lang/Object;",
  18. ">",
  19. "Lio/reactivex/observers/BaseTestConsumer<",
  20. "TT;",
  21. "Lio/reactivex/subscribers/TestSubscriber<",
  22. "TT;>;>;",
  23. "Lorg/reactivestreams/Subscriber<",
  24. "TT;>;",
  25. "Lorg/reactivestreams/Subscription;",
  26. "Lio/reactivex/disposables/Disposable;"
  27. }
  28. .end annotation
  29. # instance fields
  30. .field private final actual:Lorg/reactivestreams/Subscriber;
  31. .annotation system Ldalvik/annotation/Signature;
  32. value = {
  33. "Lorg/reactivestreams/Subscriber<",
  34. "-TT;>;"
  35. }
  36. .end annotation
  37. .end field
  38. .field private volatile cancelled:Z
  39. .field private final missedRequested:Ljava/util/concurrent/atomic/AtomicLong;
  40. .field private qs:Lio/reactivex/internal/fuseable/QueueSubscription;
  41. .annotation system Ldalvik/annotation/Signature;
  42. value = {
  43. "Lio/reactivex/internal/fuseable/QueueSubscription<",
  44. "TT;>;"
  45. }
  46. .end annotation
  47. .end field
  48. .field private final subscription:Ljava/util/concurrent/atomic/AtomicReference;
  49. .annotation system Ldalvik/annotation/Signature;
  50. value = {
  51. "Ljava/util/concurrent/atomic/AtomicReference<",
  52. "Lorg/reactivestreams/Subscription;",
  53. ">;"
  54. }
  55. .end annotation
  56. .end field
  57. # direct methods
  58. .method public constructor <init>()V
  59. .locals 3
  60. .line 90
  61. sget-object v0, Lio/reactivex/subscribers/TestSubscriber$EmptySubscriber;->INSTANCE:Lio/reactivex/subscribers/TestSubscriber$EmptySubscriber;
  62. const-wide v1, 0x7fffffffffffffffL
  63. invoke-direct {p0, v0, v1, v2}, Lio/reactivex/subscribers/TestSubscriber;-><init>(Lorg/reactivestreams/Subscriber;J)V
  64. return-void
  65. .end method
  66. .method public constructor <init>(J)V
  67. .locals 1
  68. .line 100
  69. sget-object v0, Lio/reactivex/subscribers/TestSubscriber$EmptySubscriber;->INSTANCE:Lio/reactivex/subscribers/TestSubscriber$EmptySubscriber;
  70. invoke-direct {p0, v0, p1, p2}, Lio/reactivex/subscribers/TestSubscriber;-><init>(Lorg/reactivestreams/Subscriber;J)V
  71. return-void
  72. .end method
  73. .method public constructor <init>(Lorg/reactivestreams/Subscriber;)V
  74. .locals 2
  75. .annotation system Ldalvik/annotation/Signature;
  76. value = {
  77. "(",
  78. "Lorg/reactivestreams/Subscriber<",
  79. "-TT;>;)V"
  80. }
  81. .end annotation
  82. const-wide v0, 0x7fffffffffffffffL
  83. .line 108
  84. invoke-direct {p0, p1, v0, v1}, Lio/reactivex/subscribers/TestSubscriber;-><init>(Lorg/reactivestreams/Subscriber;J)V
  85. return-void
  86. .end method
  87. .method public constructor <init>(Lorg/reactivestreams/Subscriber;J)V
  88. .locals 0
  89. .annotation system Ldalvik/annotation/Signature;
  90. value = {
  91. "(",
  92. "Lorg/reactivestreams/Subscriber<",
  93. "-TT;>;J)V"
  94. }
  95. .end annotation
  96. .line 119
  97. invoke-direct {p0}, Lio/reactivex/observers/BaseTestConsumer;-><init>()V
  98. .line 120
  99. iput-object p1, p0, Lio/reactivex/subscribers/TestSubscriber;->actual:Lorg/reactivestreams/Subscriber;
  100. .line 121
  101. new-instance p1, Ljava/util/concurrent/atomic/AtomicReference;
  102. invoke-direct {p1}, Ljava/util/concurrent/atomic/AtomicReference;-><init>()V
  103. iput-object p1, p0, Lio/reactivex/subscribers/TestSubscriber;->subscription:Ljava/util/concurrent/atomic/AtomicReference;
  104. .line 122
  105. new-instance p1, Ljava/util/concurrent/atomic/AtomicLong;
  106. invoke-direct {p1, p2, p3}, Ljava/util/concurrent/atomic/AtomicLong;-><init>(J)V
  107. iput-object p1, p0, Lio/reactivex/subscribers/TestSubscriber;->missedRequested:Ljava/util/concurrent/atomic/AtomicLong;
  108. return-void
  109. .end method
  110. .method public static create()Lio/reactivex/subscribers/TestSubscriber;
  111. .locals 1
  112. .annotation system Ldalvik/annotation/Signature;
  113. value = {
  114. "<T:",
  115. "Ljava/lang/Object;",
  116. ">()",
  117. "Lio/reactivex/subscribers/TestSubscriber<",
  118. "TT;>;"
  119. }
  120. .end annotation
  121. .line 63
  122. new-instance v0, Lio/reactivex/subscribers/TestSubscriber;
  123. invoke-direct {v0}, Lio/reactivex/subscribers/TestSubscriber;-><init>()V
  124. return-object v0
  125. .end method
  126. .method public static create(J)Lio/reactivex/subscribers/TestSubscriber;
  127. .locals 1
  128. .annotation system Ldalvik/annotation/Signature;
  129. value = {
  130. "<T:",
  131. "Ljava/lang/Object;",
  132. ">(J)",
  133. "Lio/reactivex/subscribers/TestSubscriber<",
  134. "TT;>;"
  135. }
  136. .end annotation
  137. .line 73
  138. new-instance v0, Lio/reactivex/subscribers/TestSubscriber;
  139. invoke-direct {v0, p0, p1}, Lio/reactivex/subscribers/TestSubscriber;-><init>(J)V
  140. return-object v0
  141. .end method
  142. .method public static create(Lorg/reactivestreams/Subscriber;)Lio/reactivex/subscribers/TestSubscriber;
  143. .locals 1
  144. .annotation system Ldalvik/annotation/Signature;
  145. value = {
  146. "<T:",
  147. "Ljava/lang/Object;",
  148. ">(",
  149. "Lorg/reactivestreams/Subscriber<",
  150. "-TT;>;)",
  151. "Lio/reactivex/subscribers/TestSubscriber<",
  152. "TT;>;"
  153. }
  154. .end annotation
  155. .line 83
  156. new-instance v0, Lio/reactivex/subscribers/TestSubscriber;
  157. invoke-direct {v0, p0}, Lio/reactivex/subscribers/TestSubscriber;-><init>(Lorg/reactivestreams/Subscriber;)V
  158. return-object v0
  159. .end method
  160. .method static fusionModeToString(I)Ljava/lang/String;
  161. .locals 2
  162. if-eqz p0, :cond_2
  163. const/4 v0, 0x1
  164. if-eq p0, v0, :cond_1
  165. const/4 v0, 0x2
  166. if-eq p0, v0, :cond_0
  167. .line 363
  168. new-instance v0, Ljava/lang/StringBuilder;
  169. invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
  170. const-string v1, "Unknown("
  171. invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  172. invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  173. const-string p0, ")"
  174. invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  175. invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  176. move-result-object p0
  177. return-object p0
  178. :cond_0
  179. const-string p0, "ASYNC"
  180. return-object p0
  181. :cond_1
  182. const-string p0, "SYNC"
  183. return-object p0
  184. :cond_2
  185. const-string p0, "NONE"
  186. return-object p0
  187. .end method
  188. # virtual methods
  189. .method final assertFuseable()Lio/reactivex/subscribers/TestSubscriber;
  190. .locals 2
  191. .annotation system Ldalvik/annotation/Signature;
  192. value = {
  193. "()",
  194. "Lio/reactivex/subscribers/TestSubscriber<",
  195. "TT;>;"
  196. }
  197. .end annotation
  198. .line 374
  199. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->qs:Lio/reactivex/internal/fuseable/QueueSubscription;
  200. if-eqz v0, :cond_0
  201. return-object p0
  202. .line 375
  203. :cond_0
  204. new-instance v0, Ljava/lang/AssertionError;
  205. const-string v1, "Upstream is not fuseable."
  206. invoke-direct {v0, v1}, Ljava/lang/AssertionError;-><init>(Ljava/lang/Object;)V
  207. throw v0
  208. .end method
  209. .method final assertFusionMode(I)Lio/reactivex/subscribers/TestSubscriber;
  210. .locals 4
  211. .annotation system Ldalvik/annotation/Signature;
  212. value = {
  213. "(I)",
  214. "Lio/reactivex/subscribers/TestSubscriber<",
  215. "TT;>;"
  216. }
  217. .end annotation
  218. .line 346
  219. iget v0, p0, Lio/reactivex/subscribers/TestSubscriber;->establishedFusionMode:I
  220. if-eq v0, p1, :cond_1
  221. .line 348
  222. iget-object v1, p0, Lio/reactivex/subscribers/TestSubscriber;->qs:Lio/reactivex/internal/fuseable/QueueSubscription;
  223. if-eqz v1, :cond_0
  224. .line 349
  225. new-instance v1, Ljava/lang/AssertionError;
  226. new-instance v2, Ljava/lang/StringBuilder;
  227. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  228. const-string v3, "Fusion mode different. Expected: "
  229. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  230. invoke-static {p1}, Lio/reactivex/subscribers/TestSubscriber;->fusionModeToString(I)Ljava/lang/String;
  231. move-result-object p1
  232. invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  233. const-string p1, ", actual: "
  234. invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  235. invoke-static {v0}, Lio/reactivex/subscribers/TestSubscriber;->fusionModeToString(I)Ljava/lang/String;
  236. move-result-object p1
  237. invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  238. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  239. move-result-object p1
  240. invoke-direct {v1, p1}, Ljava/lang/AssertionError;-><init>(Ljava/lang/Object;)V
  241. throw v1
  242. :cond_0
  243. const-string p1, "Upstream is not fuseable"
  244. .line 352
  245. invoke-virtual {p0, p1}, Lio/reactivex/subscribers/TestSubscriber;->fail(Ljava/lang/String;)Ljava/lang/AssertionError;
  246. move-result-object p1
  247. throw p1
  248. :cond_1
  249. return-object p0
  250. .end method
  251. .method final assertNotFuseable()Lio/reactivex/subscribers/TestSubscriber;
  252. .locals 2
  253. .annotation system Ldalvik/annotation/Signature;
  254. value = {
  255. "()",
  256. "Lio/reactivex/subscribers/TestSubscriber<",
  257. "TT;>;"
  258. }
  259. .end annotation
  260. .line 387
  261. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->qs:Lio/reactivex/internal/fuseable/QueueSubscription;
  262. if-nez v0, :cond_0
  263. return-object p0
  264. .line 388
  265. :cond_0
  266. new-instance v0, Ljava/lang/AssertionError;
  267. const-string v1, "Upstream is fuseable."
  268. invoke-direct {v0, v1}, Ljava/lang/AssertionError;-><init>(Ljava/lang/Object;)V
  269. throw v0
  270. .end method
  271. .method public bridge synthetic assertNotSubscribed()Lio/reactivex/observers/BaseTestConsumer;
  272. .locals 1
  273. .line 40
  274. invoke-virtual {p0}, Lio/reactivex/subscribers/TestSubscriber;->assertNotSubscribed()Lio/reactivex/subscribers/TestSubscriber;
  275. move-result-object v0
  276. return-object v0
  277. .end method
  278. .method public final assertNotSubscribed()Lio/reactivex/subscribers/TestSubscriber;
  279. .locals 1
  280. .annotation system Ldalvik/annotation/Signature;
  281. value = {
  282. "()",
  283. "Lio/reactivex/subscribers/TestSubscriber<",
  284. "TT;>;"
  285. }
  286. .end annotation
  287. .line 317
  288. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->subscription:Ljava/util/concurrent/atomic/AtomicReference;
  289. invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
  290. move-result-object v0
  291. if-nez v0, :cond_1
  292. .line 320
  293. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->errors:Ljava/util/List;
  294. invoke-interface {v0}, Ljava/util/List;->isEmpty()Z
  295. move-result v0
  296. if-eqz v0, :cond_0
  297. return-object p0
  298. :cond_0
  299. const-string v0, "Not subscribed but errors found"
  300. .line 321
  301. invoke-virtual {p0, v0}, Lio/reactivex/subscribers/TestSubscriber;->fail(Ljava/lang/String;)Ljava/lang/AssertionError;
  302. move-result-object v0
  303. throw v0
  304. :cond_1
  305. const-string v0, "Subscribed!"
  306. .line 318
  307. invoke-virtual {p0, v0}, Lio/reactivex/subscribers/TestSubscriber;->fail(Ljava/lang/String;)Ljava/lang/AssertionError;
  308. move-result-object v0
  309. throw v0
  310. .end method
  311. .method public final assertOf(Lio/reactivex/functions/Consumer;)Lio/reactivex/subscribers/TestSubscriber;
  312. .locals 0
  313. .annotation system Ldalvik/annotation/Signature;
  314. value = {
  315. "(",
  316. "Lio/reactivex/functions/Consumer<",
  317. "-",
  318. "Lio/reactivex/subscribers/TestSubscriber<",
  319. "TT;>;>;)",
  320. "Lio/reactivex/subscribers/TestSubscriber<",
  321. "TT;>;"
  322. }
  323. .end annotation
  324. .line 400
  325. :try_start_0
  326. invoke-interface {p1, p0}, Lio/reactivex/functions/Consumer;->accept(Ljava/lang/Object;)V
  327. :try_end_0
  328. .catch Ljava/lang/Throwable; {:try_start_0 .. :try_end_0} :catch_0
  329. return-object p0
  330. :catch_0
  331. move-exception p1
  332. .line 402
  333. invoke-static {p1}, Lio/reactivex/internal/util/ExceptionHelper;->wrapOrThrow(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
  334. move-result-object p1
  335. throw p1
  336. .end method
  337. .method public bridge synthetic assertSubscribed()Lio/reactivex/observers/BaseTestConsumer;
  338. .locals 1
  339. .line 40
  340. invoke-virtual {p0}, Lio/reactivex/subscribers/TestSubscriber;->assertSubscribed()Lio/reactivex/subscribers/TestSubscriber;
  341. move-result-object v0
  342. return-object v0
  343. .end method
  344. .method public final assertSubscribed()Lio/reactivex/subscribers/TestSubscriber;
  345. .locals 1
  346. .annotation system Ldalvik/annotation/Signature;
  347. value = {
  348. "()",
  349. "Lio/reactivex/subscribers/TestSubscriber<",
  350. "TT;>;"
  351. }
  352. .end annotation
  353. .line 305
  354. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->subscription:Ljava/util/concurrent/atomic/AtomicReference;
  355. invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
  356. move-result-object v0
  357. if-eqz v0, :cond_0
  358. return-object p0
  359. :cond_0
  360. const-string v0, "Not subscribed!"
  361. .line 306
  362. invoke-virtual {p0, v0}, Lio/reactivex/subscribers/TestSubscriber;->fail(Ljava/lang/String;)Ljava/lang/AssertionError;
  363. move-result-object v0
  364. throw v0
  365. .end method
  366. .method public final cancel()V
  367. .locals 1
  368. .line 263
  369. iget-boolean v0, p0, Lio/reactivex/subscribers/TestSubscriber;->cancelled:Z
  370. if-nez v0, :cond_0
  371. const/4 v0, 0x1
  372. .line 264
  373. iput-boolean v0, p0, Lio/reactivex/subscribers/TestSubscriber;->cancelled:Z
  374. .line 265
  375. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->subscription:Ljava/util/concurrent/atomic/AtomicReference;
  376. invoke-static {v0}, Lio/reactivex/internal/subscriptions/SubscriptionHelper;->cancel(Ljava/util/concurrent/atomic/AtomicReference;)Z
  377. :cond_0
  378. return-void
  379. .end method
  380. .method public final dispose()V
  381. .locals 0
  382. .line 279
  383. invoke-virtual {p0}, Lio/reactivex/subscribers/TestSubscriber;->cancel()V
  384. return-void
  385. .end method
  386. .method public final hasSubscription()Z
  387. .locals 1
  388. .line 294
  389. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->subscription:Ljava/util/concurrent/atomic/AtomicReference;
  390. invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
  391. move-result-object v0
  392. if-eqz v0, :cond_0
  393. const/4 v0, 0x1
  394. goto :goto_0
  395. :cond_0
  396. const/4 v0, 0x0
  397. :goto_0
  398. return v0
  399. .end method
  400. .method public final isCancelled()Z
  401. .locals 1
  402. .line 274
  403. iget-boolean v0, p0, Lio/reactivex/subscribers/TestSubscriber;->cancelled:Z
  404. return v0
  405. .end method
  406. .method public final isDisposed()Z
  407. .locals 1
  408. .line 284
  409. iget-boolean v0, p0, Lio/reactivex/subscribers/TestSubscriber;->cancelled:Z
  410. return v0
  411. .end method
  412. .method public onComplete()V
  413. .locals 4
  414. .line 240
  415. iget-boolean v0, p0, Lio/reactivex/subscribers/TestSubscriber;->checkSubscriptionOnce:Z
  416. if-nez v0, :cond_0
  417. const/4 v0, 0x1
  418. .line 241
  419. iput-boolean v0, p0, Lio/reactivex/subscribers/TestSubscriber;->checkSubscriptionOnce:Z
  420. .line 242
  421. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->subscription:Ljava/util/concurrent/atomic/AtomicReference;
  422. invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
  423. move-result-object v0
  424. if-nez v0, :cond_0
  425. .line 243
  426. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->errors:Ljava/util/List;
  427. new-instance v1, Ljava/lang/IllegalStateException;
  428. const-string v2, "onSubscribe not called in proper order"
  429. invoke-direct {v1, v2}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
  430. invoke-interface {v0, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
  431. .line 247
  432. :cond_0
  433. :try_start_0
  434. invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
  435. move-result-object v0
  436. iput-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->lastThread:Ljava/lang/Thread;
  437. .line 248
  438. iget-wide v0, p0, Lio/reactivex/subscribers/TestSubscriber;->completions:J
  439. const-wide/16 v2, 0x1
  440. add-long/2addr v0, v2
  441. iput-wide v0, p0, Lio/reactivex/subscribers/TestSubscriber;->completions:J
  442. .line 250
  443. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->actual:Lorg/reactivestreams/Subscriber;
  444. invoke-interface {v0}, Lorg/reactivestreams/Subscriber;->onComplete()V
  445. :try_end_0
  446. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  447. .line 252
  448. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->done:Ljava/util/concurrent/CountDownLatch;
  449. invoke-virtual {v0}, Ljava/util/concurrent/CountDownLatch;->countDown()V
  450. return-void
  451. :catchall_0
  452. move-exception v0
  453. iget-object v1, p0, Lio/reactivex/subscribers/TestSubscriber;->done:Ljava/util/concurrent/CountDownLatch;
  454. invoke-virtual {v1}, Ljava/util/concurrent/CountDownLatch;->countDown()V
  455. throw v0
  456. .end method
  457. .method public onError(Ljava/lang/Throwable;)V
  458. .locals 3
  459. .line 218
  460. iget-boolean v0, p0, Lio/reactivex/subscribers/TestSubscriber;->checkSubscriptionOnce:Z
  461. if-nez v0, :cond_0
  462. const/4 v0, 0x1
  463. .line 219
  464. iput-boolean v0, p0, Lio/reactivex/subscribers/TestSubscriber;->checkSubscriptionOnce:Z
  465. .line 220
  466. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->subscription:Ljava/util/concurrent/atomic/AtomicReference;
  467. invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
  468. move-result-object v0
  469. if-nez v0, :cond_0
  470. .line 221
  471. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->errors:Ljava/util/List;
  472. new-instance v1, Ljava/lang/NullPointerException;
  473. const-string v2, "onSubscribe not called in proper order"
  474. invoke-direct {v1, v2}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
  475. invoke-interface {v0, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
  476. .line 225
  477. :cond_0
  478. :try_start_0
  479. invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
  480. move-result-object v0
  481. iput-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->lastThread:Ljava/lang/Thread;
  482. .line 226
  483. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->errors:Ljava/util/List;
  484. invoke-interface {v0, p1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
  485. if-nez p1, :cond_1
  486. .line 229
  487. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->errors:Ljava/util/List;
  488. new-instance v1, Ljava/lang/IllegalStateException;
  489. const-string v2, "onError received a null Throwable"
  490. invoke-direct {v1, v2}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
  491. invoke-interface {v0, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
  492. .line 232
  493. :cond_1
  494. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->actual:Lorg/reactivestreams/Subscriber;
  495. invoke-interface {v0, p1}, Lorg/reactivestreams/Subscriber;->onError(Ljava/lang/Throwable;)V
  496. :try_end_0
  497. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  498. .line 234
  499. iget-object p1, p0, Lio/reactivex/subscribers/TestSubscriber;->done:Ljava/util/concurrent/CountDownLatch;
  500. invoke-virtual {p1}, Ljava/util/concurrent/CountDownLatch;->countDown()V
  501. return-void
  502. :catchall_0
  503. move-exception p1
  504. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->done:Ljava/util/concurrent/CountDownLatch;
  505. invoke-virtual {v0}, Ljava/util/concurrent/CountDownLatch;->countDown()V
  506. throw p1
  507. .end method
  508. .method public onNext(Ljava/lang/Object;)V
  509. .locals 3
  510. .annotation system Ldalvik/annotation/Signature;
  511. value = {
  512. "(TT;)V"
  513. }
  514. .end annotation
  515. .line 187
  516. iget-boolean v0, p0, Lio/reactivex/subscribers/TestSubscriber;->checkSubscriptionOnce:Z
  517. if-nez v0, :cond_0
  518. const/4 v0, 0x1
  519. .line 188
  520. iput-boolean v0, p0, Lio/reactivex/subscribers/TestSubscriber;->checkSubscriptionOnce:Z
  521. .line 189
  522. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->subscription:Ljava/util/concurrent/atomic/AtomicReference;
  523. invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
  524. move-result-object v0
  525. if-nez v0, :cond_0
  526. .line 190
  527. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->errors:Ljava/util/List;
  528. new-instance v1, Ljava/lang/IllegalStateException;
  529. const-string v2, "onSubscribe not called in proper order"
  530. invoke-direct {v1, v2}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
  531. invoke-interface {v0, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
  532. .line 193
  533. :cond_0
  534. invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
  535. move-result-object v0
  536. iput-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->lastThread:Ljava/lang/Thread;
  537. .line 195
  538. iget v0, p0, Lio/reactivex/subscribers/TestSubscriber;->establishedFusionMode:I
  539. const/4 v1, 0x2
  540. if-ne v0, v1, :cond_2
  541. .line 197
  542. :goto_0
  543. :try_start_0
  544. iget-object p1, p0, Lio/reactivex/subscribers/TestSubscriber;->qs:Lio/reactivex/internal/fuseable/QueueSubscription;
  545. invoke-interface {p1}, Lio/reactivex/internal/fuseable/QueueSubscription;->poll()Ljava/lang/Object;
  546. move-result-object p1
  547. if-eqz p1, :cond_1
  548. .line 198
  549. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->values:Ljava/util/List;
  550. invoke-interface {v0, p1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
  551. :try_end_0
  552. .catch Ljava/lang/Throwable; {:try_start_0 .. :try_end_0} :catch_0
  553. goto :goto_0
  554. :catch_0
  555. move-exception p1
  556. .line 202
  557. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->errors:Ljava/util/List;
  558. invoke-interface {v0, p1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
  559. :cond_1
  560. return-void
  561. .line 207
  562. :cond_2
  563. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->values:Ljava/util/List;
  564. invoke-interface {v0, p1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
  565. if-nez p1, :cond_3
  566. .line 210
  567. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->errors:Ljava/util/List;
  568. new-instance v1, Ljava/lang/NullPointerException;
  569. const-string v2, "onNext received a null value"
  570. invoke-direct {v1, v2}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
  571. invoke-interface {v0, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
  572. .line 213
  573. :cond_3
  574. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->actual:Lorg/reactivestreams/Subscriber;
  575. invoke-interface {v0, p1}, Lorg/reactivestreams/Subscriber;->onNext(Ljava/lang/Object;)V
  576. return-void
  577. .end method
  578. .method protected onStart()V
  579. .locals 0
  580. return-void
  581. .end method
  582. .method public onSubscribe(Lorg/reactivestreams/Subscription;)V
  583. .locals 5
  584. .line 128
  585. invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
  586. move-result-object v0
  587. iput-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->lastThread:Ljava/lang/Thread;
  588. if-nez p1, :cond_0
  589. .line 131
  590. iget-object p1, p0, Lio/reactivex/subscribers/TestSubscriber;->errors:Ljava/util/List;
  591. new-instance v0, Ljava/lang/NullPointerException;
  592. const-string v1, "onSubscribe received a null Subscription"
  593. invoke-direct {v0, v1}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
  594. invoke-interface {p1, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
  595. return-void
  596. .line 134
  597. :cond_0
  598. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->subscription:Ljava/util/concurrent/atomic/AtomicReference;
  599. const/4 v1, 0x0
  600. invoke-virtual {v0, v1, p1}, Ljava/util/concurrent/atomic/AtomicReference;->compareAndSet(Ljava/lang/Object;Ljava/lang/Object;)Z
  601. move-result v0
  602. if-nez v0, :cond_2
  603. .line 135
  604. invoke-interface {p1}, Lorg/reactivestreams/Subscription;->cancel()V
  605. .line 136
  606. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->subscription:Ljava/util/concurrent/atomic/AtomicReference;
  607. invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
  608. move-result-object v0
  609. sget-object v1, Lio/reactivex/internal/subscriptions/SubscriptionHelper;->CANCELLED:Lio/reactivex/internal/subscriptions/SubscriptionHelper;
  610. if-eq v0, v1, :cond_1
  611. .line 137
  612. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->errors:Ljava/util/List;
  613. new-instance v1, Ljava/lang/IllegalStateException;
  614. new-instance v2, Ljava/lang/StringBuilder;
  615. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  616. const-string v3, "onSubscribe received multiple subscriptions: "
  617. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  618. invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  619. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  620. move-result-object p1
  621. invoke-direct {v1, p1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
  622. invoke-interface {v0, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
  623. :cond_1
  624. return-void
  625. .line 142
  626. :cond_2
  627. iget v0, p0, Lio/reactivex/subscribers/TestSubscriber;->initialFusionMode:I
  628. if-eqz v0, :cond_4
  629. .line 143
  630. instance-of v0, p1, Lio/reactivex/internal/fuseable/QueueSubscription;
  631. if-eqz v0, :cond_4
  632. .line 144
  633. move-object v0, p1
  634. check-cast v0, Lio/reactivex/internal/fuseable/QueueSubscription;
  635. iput-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->qs:Lio/reactivex/internal/fuseable/QueueSubscription;
  636. .line 146
  637. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->qs:Lio/reactivex/internal/fuseable/QueueSubscription;
  638. iget v1, p0, Lio/reactivex/subscribers/TestSubscriber;->initialFusionMode:I
  639. invoke-interface {v0, v1}, Lio/reactivex/internal/fuseable/QueueSubscription;->requestFusion(I)I
  640. move-result v0
  641. .line 147
  642. iput v0, p0, Lio/reactivex/subscribers/TestSubscriber;->establishedFusionMode:I
  643. const/4 v1, 0x1
  644. if-ne v0, v1, :cond_4
  645. .line 150
  646. iput-boolean v1, p0, Lio/reactivex/subscribers/TestSubscriber;->checkSubscriptionOnce:Z
  647. .line 151
  648. invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
  649. move-result-object p1
  650. iput-object p1, p0, Lio/reactivex/subscribers/TestSubscriber;->lastThread:Ljava/lang/Thread;
  651. .line 154
  652. :goto_0
  653. :try_start_0
  654. iget-object p1, p0, Lio/reactivex/subscribers/TestSubscriber;->qs:Lio/reactivex/internal/fuseable/QueueSubscription;
  655. invoke-interface {p1}, Lio/reactivex/internal/fuseable/QueueSubscription;->poll()Ljava/lang/Object;
  656. move-result-object p1
  657. if-eqz p1, :cond_3
  658. .line 155
  659. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->values:Ljava/util/List;
  660. invoke-interface {v0, p1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
  661. goto :goto_0
  662. .line 157
  663. :cond_3
  664. iget-wide v0, p0, Lio/reactivex/subscribers/TestSubscriber;->completions:J
  665. const-wide/16 v2, 0x1
  666. add-long/2addr v0, v2
  667. iput-wide v0, p0, Lio/reactivex/subscribers/TestSubscriber;->completions:J
  668. :try_end_0
  669. .catch Ljava/lang/Throwable; {:try_start_0 .. :try_end_0} :catch_0
  670. goto :goto_1
  671. :catch_0
  672. move-exception p1
  673. .line 160
  674. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->errors:Ljava/util/List;
  675. invoke-interface {v0, p1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
  676. :goto_1
  677. return-void
  678. .line 168
  679. :cond_4
  680. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->actual:Lorg/reactivestreams/Subscriber;
  681. invoke-interface {v0, p1}, Lorg/reactivestreams/Subscriber;->onSubscribe(Lorg/reactivestreams/Subscription;)V
  682. .line 170
  683. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->missedRequested:Ljava/util/concurrent/atomic/AtomicLong;
  684. const-wide/16 v1, 0x0
  685. invoke-virtual {v0, v1, v2}, Ljava/util/concurrent/atomic/AtomicLong;->getAndSet(J)J
  686. move-result-wide v3
  687. cmp-long v0, v3, v1
  688. if-eqz v0, :cond_5
  689. .line 172
  690. invoke-interface {p1, v3, v4}, Lorg/reactivestreams/Subscription;->request(J)V
  691. .line 175
  692. :cond_5
  693. invoke-virtual {p0}, Lio/reactivex/subscribers/TestSubscriber;->onStart()V
  694. return-void
  695. .end method
  696. .method public final request(J)V
  697. .locals 2
  698. .line 258
  699. iget-object v0, p0, Lio/reactivex/subscribers/TestSubscriber;->subscription:Ljava/util/concurrent/atomic/AtomicReference;
  700. iget-object v1, p0, Lio/reactivex/subscribers/TestSubscriber;->missedRequested:Ljava/util/concurrent/atomic/AtomicLong;
  701. invoke-static {v0, v1, p1, p2}, Lio/reactivex/internal/subscriptions/SubscriptionHelper;->deferredRequest(Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicLong;J)V
  702. return-void
  703. .end method
  704. .method public final requestMore(J)Lio/reactivex/subscribers/TestSubscriber;
  705. .locals 0
  706. .annotation system Ldalvik/annotation/Signature;
  707. value = {
  708. "(J)",
  709. "Lio/reactivex/subscribers/TestSubscriber<",
  710. "TT;>;"
  711. }
  712. .end annotation
  713. .annotation build Lio/reactivex/annotations/Experimental;
  714. .end annotation
  715. .line 415
  716. invoke-virtual {p0, p1, p2}, Lio/reactivex/subscribers/TestSubscriber;->request(J)V
  717. return-object p0
  718. .end method
  719. .method final setInitialFusionMode(I)Lio/reactivex/subscribers/TestSubscriber;
  720. .locals 0
  721. .annotation system Ldalvik/annotation/Signature;
  722. value = {
  723. "(I)",
  724. "Lio/reactivex/subscribers/TestSubscriber<",
  725. "TT;>;"
  726. }
  727. .end annotation
  728. .line 334
  729. iput p1, p0, Lio/reactivex/subscribers/TestSubscriber;->initialFusionMode:I
  730. return-object p0
  731. .end method