BlockingMultiObserver.smali 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436
  1. .class public final Lio/reactivex/internal/observers/BlockingMultiObserver;
  2. .super Ljava/util/concurrent/CountDownLatch;
  3. .source "BlockingMultiObserver.java"
  4. # interfaces
  5. .implements Lio/reactivex/SingleObserver;
  6. .implements Lio/reactivex/CompletableObserver;
  7. .implements Lio/reactivex/MaybeObserver;
  8. # annotations
  9. .annotation system Ldalvik/annotation/Signature;
  10. value = {
  11. "<T:",
  12. "Ljava/lang/Object;",
  13. ">",
  14. "Ljava/util/concurrent/CountDownLatch;",
  15. "Lio/reactivex/SingleObserver<",
  16. "TT;>;",
  17. "Lio/reactivex/CompletableObserver;",
  18. "Lio/reactivex/MaybeObserver<",
  19. "TT;>;"
  20. }
  21. .end annotation
  22. # instance fields
  23. .field volatile cancelled:Z
  24. .field d:Lio/reactivex/disposables/Disposable;
  25. .field error:Ljava/lang/Throwable;
  26. .field value:Ljava/lang/Object;
  27. .annotation system Ldalvik/annotation/Signature;
  28. value = {
  29. "TT;"
  30. }
  31. .end annotation
  32. .end field
  33. # direct methods
  34. .method public constructor <init>()V
  35. .locals 1
  36. const/4 v0, 0x1
  37. .line 38
  38. invoke-direct {p0, v0}, Ljava/util/concurrent/CountDownLatch;-><init>(I)V
  39. return-void
  40. .end method
  41. # virtual methods
  42. .method public blockingAwait(JLjava/util/concurrent/TimeUnit;)Z
  43. .locals 5
  44. .line 169
  45. invoke-virtual {p0}, Lio/reactivex/internal/observers/BlockingMultiObserver;->getCount()J
  46. move-result-wide v0
  47. const-wide/16 v2, 0x0
  48. cmp-long v4, v0, v2
  49. if-eqz v4, :cond_0
  50. .line 171
  51. :try_start_0
  52. invoke-static {}, Lio/reactivex/internal/util/BlockingHelper;->verifyNonBlocking()V
  53. .line 172
  54. invoke-virtual {p0, p1, p2, p3}, Lio/reactivex/internal/observers/BlockingMultiObserver;->await(JLjava/util/concurrent/TimeUnit;)Z
  55. move-result p1
  56. if-nez p1, :cond_0
  57. .line 173
  58. invoke-virtual {p0}, Lio/reactivex/internal/observers/BlockingMultiObserver;->dispose()V
  59. :try_end_0
  60. .catch Ljava/lang/InterruptedException; {:try_start_0 .. :try_end_0} :catch_0
  61. const/4 p1, 0x0
  62. return p1
  63. :catch_0
  64. move-exception p1
  65. .line 177
  66. invoke-virtual {p0}, Lio/reactivex/internal/observers/BlockingMultiObserver;->dispose()V
  67. .line 178
  68. invoke-static {p1}, Lio/reactivex/internal/util/ExceptionHelper;->wrapOrThrow(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
  69. move-result-object p1
  70. throw p1
  71. .line 181
  72. :cond_0
  73. iget-object p1, p0, Lio/reactivex/internal/observers/BlockingMultiObserver;->error:Ljava/lang/Throwable;
  74. if-nez p1, :cond_1
  75. const/4 p1, 0x1
  76. return p1
  77. .line 183
  78. :cond_1
  79. invoke-static {p1}, Lio/reactivex/internal/util/ExceptionHelper;->wrapOrThrow(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
  80. move-result-object p1
  81. throw p1
  82. .end method
  83. .method public blockingGet()Ljava/lang/Object;
  84. .locals 5
  85. .annotation system Ldalvik/annotation/Signature;
  86. value = {
  87. "()TT;"
  88. }
  89. .end annotation
  90. .line 80
  91. invoke-virtual {p0}, Lio/reactivex/internal/observers/BlockingMultiObserver;->getCount()J
  92. move-result-wide v0
  93. const-wide/16 v2, 0x0
  94. cmp-long v4, v0, v2
  95. if-eqz v4, :cond_0
  96. .line 82
  97. :try_start_0
  98. invoke-static {}, Lio/reactivex/internal/util/BlockingHelper;->verifyNonBlocking()V
  99. .line 83
  100. invoke-virtual {p0}, Lio/reactivex/internal/observers/BlockingMultiObserver;->await()V
  101. :try_end_0
  102. .catch Ljava/lang/InterruptedException; {:try_start_0 .. :try_end_0} :catch_0
  103. goto :goto_0
  104. :catch_0
  105. move-exception v0
  106. .line 85
  107. invoke-virtual {p0}, Lio/reactivex/internal/observers/BlockingMultiObserver;->dispose()V
  108. .line 86
  109. invoke-static {v0}, Lio/reactivex/internal/util/ExceptionHelper;->wrapOrThrow(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
  110. move-result-object v0
  111. throw v0
  112. .line 89
  113. :cond_0
  114. :goto_0
  115. iget-object v0, p0, Lio/reactivex/internal/observers/BlockingMultiObserver;->error:Ljava/lang/Throwable;
  116. if-nez v0, :cond_1
  117. .line 93
  118. iget-object v0, p0, Lio/reactivex/internal/observers/BlockingMultiObserver;->value:Ljava/lang/Object;
  119. return-object v0
  120. .line 91
  121. :cond_1
  122. invoke-static {v0}, Lio/reactivex/internal/util/ExceptionHelper;->wrapOrThrow(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
  123. move-result-object v0
  124. throw v0
  125. .end method
  126. .method public blockingGet(Ljava/lang/Object;)Ljava/lang/Object;
  127. .locals 5
  128. .annotation system Ldalvik/annotation/Signature;
  129. value = {
  130. "(TT;)TT;"
  131. }
  132. .end annotation
  133. .line 103
  134. invoke-virtual {p0}, Lio/reactivex/internal/observers/BlockingMultiObserver;->getCount()J
  135. move-result-wide v0
  136. const-wide/16 v2, 0x0
  137. cmp-long v4, v0, v2
  138. if-eqz v4, :cond_0
  139. .line 105
  140. :try_start_0
  141. invoke-static {}, Lio/reactivex/internal/util/BlockingHelper;->verifyNonBlocking()V
  142. .line 106
  143. invoke-virtual {p0}, Lio/reactivex/internal/observers/BlockingMultiObserver;->await()V
  144. :try_end_0
  145. .catch Ljava/lang/InterruptedException; {:try_start_0 .. :try_end_0} :catch_0
  146. goto :goto_0
  147. :catch_0
  148. move-exception p1
  149. .line 108
  150. invoke-virtual {p0}, Lio/reactivex/internal/observers/BlockingMultiObserver;->dispose()V
  151. .line 109
  152. invoke-static {p1}, Lio/reactivex/internal/util/ExceptionHelper;->wrapOrThrow(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
  153. move-result-object p1
  154. throw p1
  155. .line 112
  156. :cond_0
  157. :goto_0
  158. iget-object v0, p0, Lio/reactivex/internal/observers/BlockingMultiObserver;->error:Ljava/lang/Throwable;
  159. if-nez v0, :cond_2
  160. .line 116
  161. iget-object v0, p0, Lio/reactivex/internal/observers/BlockingMultiObserver;->value:Ljava/lang/Object;
  162. if-eqz v0, :cond_1
  163. move-object p1, v0
  164. :cond_1
  165. return-object p1
  166. .line 114
  167. :cond_2
  168. invoke-static {v0}, Lio/reactivex/internal/util/ExceptionHelper;->wrapOrThrow(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
  169. move-result-object p1
  170. throw p1
  171. .end method
  172. .method public blockingGetError()Ljava/lang/Throwable;
  173. .locals 5
  174. .line 126
  175. invoke-virtual {p0}, Lio/reactivex/internal/observers/BlockingMultiObserver;->getCount()J
  176. move-result-wide v0
  177. const-wide/16 v2, 0x0
  178. cmp-long v4, v0, v2
  179. if-eqz v4, :cond_0
  180. .line 128
  181. :try_start_0
  182. invoke-static {}, Lio/reactivex/internal/util/BlockingHelper;->verifyNonBlocking()V
  183. .line 129
  184. invoke-virtual {p0}, Lio/reactivex/internal/observers/BlockingMultiObserver;->await()V
  185. :try_end_0
  186. .catch Ljava/lang/InterruptedException; {:try_start_0 .. :try_end_0} :catch_0
  187. goto :goto_0
  188. :catch_0
  189. move-exception v0
  190. .line 131
  191. invoke-virtual {p0}, Lio/reactivex/internal/observers/BlockingMultiObserver;->dispose()V
  192. return-object v0
  193. .line 135
  194. :cond_0
  195. :goto_0
  196. iget-object v0, p0, Lio/reactivex/internal/observers/BlockingMultiObserver;->error:Ljava/lang/Throwable;
  197. return-object v0
  198. .end method
  199. .method public blockingGetError(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Throwable;
  200. .locals 5
  201. .line 146
  202. invoke-virtual {p0}, Lio/reactivex/internal/observers/BlockingMultiObserver;->getCount()J
  203. move-result-wide v0
  204. const-wide/16 v2, 0x0
  205. cmp-long v4, v0, v2
  206. if-eqz v4, :cond_1
  207. .line 148
  208. :try_start_0
  209. invoke-static {}, Lio/reactivex/internal/util/BlockingHelper;->verifyNonBlocking()V
  210. .line 149
  211. invoke-virtual {p0, p1, p2, p3}, Lio/reactivex/internal/observers/BlockingMultiObserver;->await(JLjava/util/concurrent/TimeUnit;)Z
  212. move-result p1
  213. if-eqz p1, :cond_0
  214. goto :goto_0
  215. .line 150
  216. :cond_0
  217. invoke-virtual {p0}, Lio/reactivex/internal/observers/BlockingMultiObserver;->dispose()V
  218. .line 151
  219. new-instance p1, Ljava/util/concurrent/TimeoutException;
  220. invoke-direct {p1}, Ljava/util/concurrent/TimeoutException;-><init>()V
  221. invoke-static {p1}, Lio/reactivex/internal/util/ExceptionHelper;->wrapOrThrow(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
  222. move-result-object p1
  223. throw p1
  224. :try_end_0
  225. .catch Ljava/lang/InterruptedException; {:try_start_0 .. :try_end_0} :catch_0
  226. :catch_0
  227. move-exception p1
  228. .line 154
  229. invoke-virtual {p0}, Lio/reactivex/internal/observers/BlockingMultiObserver;->dispose()V
  230. .line 155
  231. invoke-static {p1}, Lio/reactivex/internal/util/ExceptionHelper;->wrapOrThrow(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
  232. move-result-object p1
  233. throw p1
  234. .line 158
  235. :cond_1
  236. :goto_0
  237. iget-object p1, p0, Lio/reactivex/internal/observers/BlockingMultiObserver;->error:Ljava/lang/Throwable;
  238. return-object p1
  239. .end method
  240. .method dispose()V
  241. .locals 1
  242. const/4 v0, 0x1
  243. .line 42
  244. iput-boolean v0, p0, Lio/reactivex/internal/observers/BlockingMultiObserver;->cancelled:Z
  245. .line 43
  246. iget-object v0, p0, Lio/reactivex/internal/observers/BlockingMultiObserver;->d:Lio/reactivex/disposables/Disposable;
  247. if-eqz v0, :cond_0
  248. .line 45
  249. invoke-interface {v0}, Lio/reactivex/disposables/Disposable;->dispose()V
  250. :cond_0
  251. return-void
  252. .end method
  253. .method public onComplete()V
  254. .locals 0
  255. .line 71
  256. invoke-virtual {p0}, Lio/reactivex/internal/observers/BlockingMultiObserver;->countDown()V
  257. return-void
  258. .end method
  259. .method public onError(Ljava/lang/Throwable;)V
  260. .locals 0
  261. .line 65
  262. iput-object p1, p0, Lio/reactivex/internal/observers/BlockingMultiObserver;->error:Ljava/lang/Throwable;
  263. .line 66
  264. invoke-virtual {p0}, Lio/reactivex/internal/observers/BlockingMultiObserver;->countDown()V
  265. return-void
  266. .end method
  267. .method public onSubscribe(Lio/reactivex/disposables/Disposable;)V
  268. .locals 1
  269. .line 51
  270. iput-object p1, p0, Lio/reactivex/internal/observers/BlockingMultiObserver;->d:Lio/reactivex/disposables/Disposable;
  271. .line 52
  272. iget-boolean v0, p0, Lio/reactivex/internal/observers/BlockingMultiObserver;->cancelled:Z
  273. if-eqz v0, :cond_0
  274. .line 53
  275. invoke-interface {p1}, Lio/reactivex/disposables/Disposable;->dispose()V
  276. :cond_0
  277. return-void
  278. .end method
  279. .method public onSuccess(Ljava/lang/Object;)V
  280. .locals 0
  281. .annotation system Ldalvik/annotation/Signature;
  282. value = {
  283. "(TT;)V"
  284. }
  285. .end annotation
  286. .line 59
  287. iput-object p1, p0, Lio/reactivex/internal/observers/BlockingMultiObserver;->value:Ljava/lang/Object;
  288. .line 60
  289. invoke-virtual {p0}, Lio/reactivex/internal/observers/BlockingMultiObserver;->countDown()V
  290. return-void
  291. .end method