SerializedProcessor.smali 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586
  1. .class final Lio/reactivex/processors/SerializedProcessor;
  2. .super Lio/reactivex/processors/FlowableProcessor;
  3. .source "SerializedProcessor.java"
  4. # annotations
  5. .annotation system Ldalvik/annotation/Signature;
  6. value = {
  7. "<T:",
  8. "Ljava/lang/Object;",
  9. ">",
  10. "Lio/reactivex/processors/FlowableProcessor<",
  11. "TT;>;"
  12. }
  13. .end annotation
  14. # instance fields
  15. .field final actual:Lio/reactivex/processors/FlowableProcessor;
  16. .annotation system Ldalvik/annotation/Signature;
  17. value = {
  18. "Lio/reactivex/processors/FlowableProcessor<",
  19. "TT;>;"
  20. }
  21. .end annotation
  22. .end field
  23. .field volatile done:Z
  24. .field emitting:Z
  25. .field queue:Lio/reactivex/internal/util/AppendOnlyLinkedArrayList;
  26. .annotation system Ldalvik/annotation/Signature;
  27. value = {
  28. "Lio/reactivex/internal/util/AppendOnlyLinkedArrayList<",
  29. "Ljava/lang/Object;",
  30. ">;"
  31. }
  32. .end annotation
  33. .end field
  34. # direct methods
  35. .method constructor <init>(Lio/reactivex/processors/FlowableProcessor;)V
  36. .locals 0
  37. .annotation system Ldalvik/annotation/Signature;
  38. value = {
  39. "(",
  40. "Lio/reactivex/processors/FlowableProcessor<",
  41. "TT;>;)V"
  42. }
  43. .end annotation
  44. .line 41
  45. invoke-direct {p0}, Lio/reactivex/processors/FlowableProcessor;-><init>()V
  46. .line 42
  47. iput-object p1, p0, Lio/reactivex/processors/SerializedProcessor;->actual:Lio/reactivex/processors/FlowableProcessor;
  48. return-void
  49. .end method
  50. # virtual methods
  51. .method emitLoop()V
  52. .locals 2
  53. .line 166
  54. :goto_0
  55. monitor-enter p0
  56. .line 167
  57. :try_start_0
  58. iget-object v0, p0, Lio/reactivex/processors/SerializedProcessor;->queue:Lio/reactivex/internal/util/AppendOnlyLinkedArrayList;
  59. if-nez v0, :cond_0
  60. const/4 v0, 0x0
  61. .line 169
  62. iput-boolean v0, p0, Lio/reactivex/processors/SerializedProcessor;->emitting:Z
  63. .line 170
  64. monitor-exit p0
  65. return-void
  66. :cond_0
  67. const/4 v1, 0x0
  68. .line 172
  69. iput-object v1, p0, Lio/reactivex/processors/SerializedProcessor;->queue:Lio/reactivex/internal/util/AppendOnlyLinkedArrayList;
  70. .line 173
  71. monitor-exit p0
  72. :try_end_0
  73. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  74. .line 175
  75. iget-object v1, p0, Lio/reactivex/processors/SerializedProcessor;->actual:Lio/reactivex/processors/FlowableProcessor;
  76. invoke-virtual {v0, v1}, Lio/reactivex/internal/util/AppendOnlyLinkedArrayList;->accept(Lorg/reactivestreams/Subscriber;)Z
  77. goto :goto_0
  78. :catchall_0
  79. move-exception v0
  80. .line 173
  81. :try_start_1
  82. monitor-exit p0
  83. :try_end_1
  84. .catchall {:try_start_1 .. :try_end_1} :catchall_0
  85. goto :goto_2
  86. :goto_1
  87. throw v0
  88. :goto_2
  89. goto :goto_1
  90. .end method
  91. .method public getThrowable()Ljava/lang/Throwable;
  92. .locals 1
  93. .line 191
  94. iget-object v0, p0, Lio/reactivex/processors/SerializedProcessor;->actual:Lio/reactivex/processors/FlowableProcessor;
  95. invoke-virtual {v0}, Lio/reactivex/processors/FlowableProcessor;->getThrowable()Ljava/lang/Throwable;
  96. move-result-object v0
  97. return-object v0
  98. .end method
  99. .method public hasComplete()Z
  100. .locals 1
  101. .line 196
  102. iget-object v0, p0, Lio/reactivex/processors/SerializedProcessor;->actual:Lio/reactivex/processors/FlowableProcessor;
  103. invoke-virtual {v0}, Lio/reactivex/processors/FlowableProcessor;->hasComplete()Z
  104. move-result v0
  105. return v0
  106. .end method
  107. .method public hasSubscribers()Z
  108. .locals 1
  109. .line 181
  110. iget-object v0, p0, Lio/reactivex/processors/SerializedProcessor;->actual:Lio/reactivex/processors/FlowableProcessor;
  111. invoke-virtual {v0}, Lio/reactivex/processors/FlowableProcessor;->hasSubscribers()Z
  112. move-result v0
  113. return v0
  114. .end method
  115. .method public hasThrowable()Z
  116. .locals 1
  117. .line 186
  118. iget-object v0, p0, Lio/reactivex/processors/SerializedProcessor;->actual:Lio/reactivex/processors/FlowableProcessor;
  119. invoke-virtual {v0}, Lio/reactivex/processors/FlowableProcessor;->hasThrowable()Z
  120. move-result v0
  121. return v0
  122. .end method
  123. .method public onComplete()V
  124. .locals 2
  125. .line 140
  126. iget-boolean v0, p0, Lio/reactivex/processors/SerializedProcessor;->done:Z
  127. if-eqz v0, :cond_0
  128. return-void
  129. .line 143
  130. :cond_0
  131. monitor-enter p0
  132. .line 144
  133. :try_start_0
  134. iget-boolean v0, p0, Lio/reactivex/processors/SerializedProcessor;->done:Z
  135. if-eqz v0, :cond_1
  136. .line 145
  137. monitor-exit p0
  138. return-void
  139. :cond_1
  140. const/4 v0, 0x1
  141. .line 147
  142. iput-boolean v0, p0, Lio/reactivex/processors/SerializedProcessor;->done:Z
  143. .line 148
  144. iget-boolean v1, p0, Lio/reactivex/processors/SerializedProcessor;->emitting:Z
  145. if-eqz v1, :cond_3
  146. .line 149
  147. iget-object v0, p0, Lio/reactivex/processors/SerializedProcessor;->queue:Lio/reactivex/internal/util/AppendOnlyLinkedArrayList;
  148. if-nez v0, :cond_2
  149. .line 151
  150. new-instance v0, Lio/reactivex/internal/util/AppendOnlyLinkedArrayList;
  151. const/4 v1, 0x4
  152. invoke-direct {v0, v1}, Lio/reactivex/internal/util/AppendOnlyLinkedArrayList;-><init>(I)V
  153. .line 152
  154. iput-object v0, p0, Lio/reactivex/processors/SerializedProcessor;->queue:Lio/reactivex/internal/util/AppendOnlyLinkedArrayList;
  155. .line 154
  156. :cond_2
  157. invoke-static {}, Lio/reactivex/internal/util/NotificationLite;->complete()Ljava/lang/Object;
  158. move-result-object v1
  159. invoke-virtual {v0, v1}, Lio/reactivex/internal/util/AppendOnlyLinkedArrayList;->add(Ljava/lang/Object;)V
  160. .line 155
  161. monitor-exit p0
  162. return-void
  163. .line 157
  164. :cond_3
  165. iput-boolean v0, p0, Lio/reactivex/processors/SerializedProcessor;->emitting:Z
  166. .line 158
  167. monitor-exit p0
  168. :try_end_0
  169. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  170. .line 159
  171. iget-object v0, p0, Lio/reactivex/processors/SerializedProcessor;->actual:Lio/reactivex/processors/FlowableProcessor;
  172. invoke-virtual {v0}, Lio/reactivex/processors/FlowableProcessor;->onComplete()V
  173. return-void
  174. :catchall_0
  175. move-exception v0
  176. .line 158
  177. :try_start_1
  178. monitor-exit p0
  179. :try_end_1
  180. .catchall {:try_start_1 .. :try_end_1} :catchall_0
  181. throw v0
  182. .end method
  183. .method public onError(Ljava/lang/Throwable;)V
  184. .locals 2
  185. .line 108
  186. iget-boolean v0, p0, Lio/reactivex/processors/SerializedProcessor;->done:Z
  187. if-eqz v0, :cond_0
  188. .line 109
  189. invoke-static {p1}, Lio/reactivex/plugins/RxJavaPlugins;->onError(Ljava/lang/Throwable;)V
  190. return-void
  191. .line 113
  192. :cond_0
  193. monitor-enter p0
  194. .line 114
  195. :try_start_0
  196. iget-boolean v0, p0, Lio/reactivex/processors/SerializedProcessor;->done:Z
  197. const/4 v1, 0x1
  198. if-eqz v0, :cond_1
  199. const/4 v0, 0x1
  200. goto :goto_0
  201. .line 117
  202. :cond_1
  203. iput-boolean v1, p0, Lio/reactivex/processors/SerializedProcessor;->done:Z
  204. .line 118
  205. iget-boolean v0, p0, Lio/reactivex/processors/SerializedProcessor;->emitting:Z
  206. if-eqz v0, :cond_3
  207. .line 119
  208. iget-object v0, p0, Lio/reactivex/processors/SerializedProcessor;->queue:Lio/reactivex/internal/util/AppendOnlyLinkedArrayList;
  209. if-nez v0, :cond_2
  210. .line 121
  211. new-instance v0, Lio/reactivex/internal/util/AppendOnlyLinkedArrayList;
  212. const/4 v1, 0x4
  213. invoke-direct {v0, v1}, Lio/reactivex/internal/util/AppendOnlyLinkedArrayList;-><init>(I)V
  214. .line 122
  215. iput-object v0, p0, Lio/reactivex/processors/SerializedProcessor;->queue:Lio/reactivex/internal/util/AppendOnlyLinkedArrayList;
  216. .line 124
  217. :cond_2
  218. invoke-static {p1}, Lio/reactivex/internal/util/NotificationLite;->error(Ljava/lang/Throwable;)Ljava/lang/Object;
  219. move-result-object p1
  220. invoke-virtual {v0, p1}, Lio/reactivex/internal/util/AppendOnlyLinkedArrayList;->setFirst(Ljava/lang/Object;)V
  221. .line 125
  222. monitor-exit p0
  223. return-void
  224. :cond_3
  225. const/4 v0, 0x0
  226. .line 128
  227. iput-boolean v1, p0, Lio/reactivex/processors/SerializedProcessor;->emitting:Z
  228. .line 130
  229. :goto_0
  230. monitor-exit p0
  231. :try_end_0
  232. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  233. if-eqz v0, :cond_4
  234. .line 132
  235. invoke-static {p1}, Lio/reactivex/plugins/RxJavaPlugins;->onError(Ljava/lang/Throwable;)V
  236. return-void
  237. .line 135
  238. :cond_4
  239. iget-object v0, p0, Lio/reactivex/processors/SerializedProcessor;->actual:Lio/reactivex/processors/FlowableProcessor;
  240. invoke-virtual {v0, p1}, Lio/reactivex/processors/FlowableProcessor;->onError(Ljava/lang/Throwable;)V
  241. return-void
  242. :catchall_0
  243. move-exception p1
  244. .line 130
  245. :try_start_1
  246. monitor-exit p0
  247. :try_end_1
  248. .catchall {:try_start_1 .. :try_end_1} :catchall_0
  249. throw p1
  250. .end method
  251. .method public onNext(Ljava/lang/Object;)V
  252. .locals 2
  253. .annotation system Ldalvik/annotation/Signature;
  254. value = {
  255. "(TT;)V"
  256. }
  257. .end annotation
  258. .line 84
  259. iget-boolean v0, p0, Lio/reactivex/processors/SerializedProcessor;->done:Z
  260. if-eqz v0, :cond_0
  261. return-void
  262. .line 87
  263. :cond_0
  264. monitor-enter p0
  265. .line 88
  266. :try_start_0
  267. iget-boolean v0, p0, Lio/reactivex/processors/SerializedProcessor;->done:Z
  268. if-eqz v0, :cond_1
  269. .line 89
  270. monitor-exit p0
  271. return-void
  272. .line 91
  273. :cond_1
  274. iget-boolean v0, p0, Lio/reactivex/processors/SerializedProcessor;->emitting:Z
  275. if-eqz v0, :cond_3
  276. .line 92
  277. iget-object v0, p0, Lio/reactivex/processors/SerializedProcessor;->queue:Lio/reactivex/internal/util/AppendOnlyLinkedArrayList;
  278. if-nez v0, :cond_2
  279. .line 94
  280. new-instance v0, Lio/reactivex/internal/util/AppendOnlyLinkedArrayList;
  281. const/4 v1, 0x4
  282. invoke-direct {v0, v1}, Lio/reactivex/internal/util/AppendOnlyLinkedArrayList;-><init>(I)V
  283. .line 95
  284. iput-object v0, p0, Lio/reactivex/processors/SerializedProcessor;->queue:Lio/reactivex/internal/util/AppendOnlyLinkedArrayList;
  285. .line 97
  286. :cond_2
  287. invoke-static {p1}, Lio/reactivex/internal/util/NotificationLite;->next(Ljava/lang/Object;)Ljava/lang/Object;
  288. move-result-object p1
  289. invoke-virtual {v0, p1}, Lio/reactivex/internal/util/AppendOnlyLinkedArrayList;->add(Ljava/lang/Object;)V
  290. .line 98
  291. monitor-exit p0
  292. return-void
  293. :cond_3
  294. const/4 v0, 0x1
  295. .line 100
  296. iput-boolean v0, p0, Lio/reactivex/processors/SerializedProcessor;->emitting:Z
  297. .line 101
  298. monitor-exit p0
  299. :try_end_0
  300. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  301. .line 102
  302. iget-object v0, p0, Lio/reactivex/processors/SerializedProcessor;->actual:Lio/reactivex/processors/FlowableProcessor;
  303. invoke-virtual {v0, p1}, Lio/reactivex/processors/FlowableProcessor;->onNext(Ljava/lang/Object;)V
  304. .line 103
  305. invoke-virtual {p0}, Lio/reactivex/processors/SerializedProcessor;->emitLoop()V
  306. return-void
  307. :catchall_0
  308. move-exception p1
  309. .line 101
  310. :try_start_1
  311. monitor-exit p0
  312. :try_end_1
  313. .catchall {:try_start_1 .. :try_end_1} :catchall_0
  314. throw p1
  315. .end method
  316. .method public onSubscribe(Lorg/reactivestreams/Subscription;)V
  317. .locals 2
  318. .line 53
  319. iget-boolean v0, p0, Lio/reactivex/processors/SerializedProcessor;->done:Z
  320. const/4 v1, 0x1
  321. if-nez v0, :cond_3
  322. .line 54
  323. monitor-enter p0
  324. .line 55
  325. :try_start_0
  326. iget-boolean v0, p0, Lio/reactivex/processors/SerializedProcessor;->done:Z
  327. if-eqz v0, :cond_0
  328. goto :goto_0
  329. .line 58
  330. :cond_0
  331. iget-boolean v0, p0, Lio/reactivex/processors/SerializedProcessor;->emitting:Z
  332. if-eqz v0, :cond_2
  333. .line 59
  334. iget-object v0, p0, Lio/reactivex/processors/SerializedProcessor;->queue:Lio/reactivex/internal/util/AppendOnlyLinkedArrayList;
  335. if-nez v0, :cond_1
  336. .line 61
  337. new-instance v0, Lio/reactivex/internal/util/AppendOnlyLinkedArrayList;
  338. const/4 v1, 0x4
  339. invoke-direct {v0, v1}, Lio/reactivex/internal/util/AppendOnlyLinkedArrayList;-><init>(I)V
  340. .line 62
  341. iput-object v0, p0, Lio/reactivex/processors/SerializedProcessor;->queue:Lio/reactivex/internal/util/AppendOnlyLinkedArrayList;
  342. .line 64
  343. :cond_1
  344. invoke-static {p1}, Lio/reactivex/internal/util/NotificationLite;->subscription(Lorg/reactivestreams/Subscription;)Ljava/lang/Object;
  345. move-result-object p1
  346. invoke-virtual {v0, p1}, Lio/reactivex/internal/util/AppendOnlyLinkedArrayList;->add(Ljava/lang/Object;)V
  347. .line 65
  348. monitor-exit p0
  349. return-void
  350. .line 67
  351. :cond_2
  352. iput-boolean v1, p0, Lio/reactivex/processors/SerializedProcessor;->emitting:Z
  353. const/4 v0, 0x0
  354. const/4 v1, 0x0
  355. .line 70
  356. :goto_0
  357. monitor-exit p0
  358. goto :goto_1
  359. :catchall_0
  360. move-exception p1
  361. monitor-exit p0
  362. :try_end_0
  363. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  364. throw p1
  365. :cond_3
  366. :goto_1
  367. if-eqz v1, :cond_4
  368. .line 75
  369. invoke-interface {p1}, Lorg/reactivestreams/Subscription;->cancel()V
  370. goto :goto_2
  371. .line 77
  372. :cond_4
  373. iget-object v0, p0, Lio/reactivex/processors/SerializedProcessor;->actual:Lio/reactivex/processors/FlowableProcessor;
  374. invoke-virtual {v0, p1}, Lio/reactivex/processors/FlowableProcessor;->onSubscribe(Lorg/reactivestreams/Subscription;)V
  375. .line 78
  376. invoke-virtual {p0}, Lio/reactivex/processors/SerializedProcessor;->emitLoop()V
  377. :goto_2
  378. return-void
  379. .end method
  380. .method protected subscribeActual(Lorg/reactivestreams/Subscriber;)V
  381. .locals 1
  382. .annotation system Ldalvik/annotation/Signature;
  383. value = {
  384. "(",
  385. "Lorg/reactivestreams/Subscriber<",
  386. "-TT;>;)V"
  387. }
  388. .end annotation
  389. .line 47
  390. iget-object v0, p0, Lio/reactivex/processors/SerializedProcessor;->actual:Lio/reactivex/processors/FlowableProcessor;
  391. invoke-virtual {v0, p1}, Lio/reactivex/processors/FlowableProcessor;->subscribe(Lorg/reactivestreams/Subscriber;)V
  392. return-void
  393. .end method