DeferredScalarSubscription.smali 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435
  1. .class public Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;
  2. .super Lio/reactivex/internal/subscriptions/BasicIntQueueSubscription;
  3. .source "DeferredScalarSubscription.java"
  4. # annotations
  5. .annotation system Ldalvik/annotation/Signature;
  6. value = {
  7. "<T:",
  8. "Ljava/lang/Object;",
  9. ">",
  10. "Lio/reactivex/internal/subscriptions/BasicIntQueueSubscription<",
  11. "TT;>;"
  12. }
  13. .end annotation
  14. # static fields
  15. .field static final CANCELLED:I = 0x4
  16. .field static final FUSED_CONSUMED:I = 0x20
  17. .field static final FUSED_EMPTY:I = 0x8
  18. .field static final FUSED_READY:I = 0x10
  19. .field static final HAS_REQUEST_HAS_VALUE:I = 0x3
  20. .field static final HAS_REQUEST_NO_VALUE:I = 0x2
  21. .field static final NO_REQUEST_HAS_VALUE:I = 0x1
  22. .field static final NO_REQUEST_NO_VALUE:I = 0x0
  23. .field private static final serialVersionUID:J = -0x1ddae1b13717dd41L
  24. # instance fields
  25. .field protected final actual:Lorg/reactivestreams/Subscriber;
  26. .annotation system Ldalvik/annotation/Signature;
  27. value = {
  28. "Lorg/reactivestreams/Subscriber<",
  29. "-TT;>;"
  30. }
  31. .end annotation
  32. .end field
  33. .field protected value:Ljava/lang/Object;
  34. .annotation system Ldalvik/annotation/Signature;
  35. value = {
  36. "TT;"
  37. }
  38. .end annotation
  39. .end field
  40. # direct methods
  41. .method public constructor <init>(Lorg/reactivestreams/Subscriber;)V
  42. .locals 0
  43. .annotation system Ldalvik/annotation/Signature;
  44. value = {
  45. "(",
  46. "Lorg/reactivestreams/Subscriber<",
  47. "-TT;>;)V"
  48. }
  49. .end annotation
  50. .line 68
  51. invoke-direct {p0}, Lio/reactivex/internal/subscriptions/BasicIntQueueSubscription;-><init>()V
  52. .line 69
  53. iput-object p1, p0, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->actual:Lorg/reactivestreams/Subscriber;
  54. return-void
  55. .end method
  56. # virtual methods
  57. .method public cancel()V
  58. .locals 1
  59. const/4 v0, 0x4
  60. .line 183
  61. invoke-virtual {p0, v0}, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->set(I)V
  62. const/4 v0, 0x0
  63. .line 184
  64. iput-object v0, p0, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->value:Ljava/lang/Object;
  65. return-void
  66. .end method
  67. .method public final clear()V
  68. .locals 1
  69. const/16 v0, 0x20
  70. .line 177
  71. invoke-virtual {p0, v0}, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->lazySet(I)V
  72. const/4 v0, 0x0
  73. .line 178
  74. iput-object v0, p0, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->value:Ljava/lang/Object;
  75. return-void
  76. .end method
  77. .method public final complete(Ljava/lang/Object;)V
  78. .locals 3
  79. .annotation system Ldalvik/annotation/Signature;
  80. value = {
  81. "(TT;)V"
  82. }
  83. .end annotation
  84. .line 110
  85. invoke-virtual {p0}, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->get()I
  86. move-result v0
  87. :cond_0
  88. const/16 v1, 0x8
  89. const/4 v2, 0x4
  90. if-ne v0, v1, :cond_2
  91. .line 113
  92. iput-object p1, p0, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->value:Ljava/lang/Object;
  93. const/16 v0, 0x10
  94. .line 114
  95. invoke-virtual {p0, v0}, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->lazySet(I)V
  96. .line 116
  97. iget-object v0, p0, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->actual:Lorg/reactivestreams/Subscriber;
  98. .line 117
  99. invoke-interface {v0, p1}, Lorg/reactivestreams/Subscriber;->onNext(Ljava/lang/Object;)V
  100. .line 118
  101. invoke-virtual {p0}, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->get()I
  102. move-result p1
  103. if-eq p1, v2, :cond_1
  104. .line 119
  105. invoke-interface {v0}, Lorg/reactivestreams/Subscriber;->onComplete()V
  106. :cond_1
  107. return-void
  108. :cond_2
  109. and-int/lit8 v1, v0, -0x3
  110. if-eqz v1, :cond_3
  111. return-void
  112. :cond_3
  113. const/4 v1, 0x2
  114. if-ne v0, v1, :cond_5
  115. const/4 v0, 0x3
  116. .line 130
  117. invoke-virtual {p0, v0}, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->lazySet(I)V
  118. .line 131
  119. iget-object v0, p0, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->actual:Lorg/reactivestreams/Subscriber;
  120. .line 132
  121. invoke-interface {v0, p1}, Lorg/reactivestreams/Subscriber;->onNext(Ljava/lang/Object;)V
  122. .line 133
  123. invoke-virtual {p0}, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->get()I
  124. move-result p1
  125. if-eq p1, v2, :cond_4
  126. .line 134
  127. invoke-interface {v0}, Lorg/reactivestreams/Subscriber;->onComplete()V
  128. :cond_4
  129. return-void
  130. .line 138
  131. :cond_5
  132. iput-object p1, p0, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->value:Ljava/lang/Object;
  133. const/4 v0, 0x0
  134. const/4 v1, 0x1
  135. .line 139
  136. invoke-virtual {p0, v0, v1}, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->compareAndSet(II)Z
  137. move-result v0
  138. if-eqz v0, :cond_6
  139. return-void
  140. .line 142
  141. :cond_6
  142. invoke-virtual {p0}, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->get()I
  143. move-result v0
  144. if-ne v0, v2, :cond_0
  145. const/4 p1, 0x0
  146. .line 144
  147. iput-object p1, p0, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->value:Ljava/lang/Object;
  148. return-void
  149. .end method
  150. .method public final isCancelled()Z
  151. .locals 2
  152. .line 192
  153. invoke-virtual {p0}, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->get()I
  154. move-result v0
  155. const/4 v1, 0x4
  156. if-ne v0, v1, :cond_0
  157. const/4 v0, 0x1
  158. goto :goto_0
  159. :cond_0
  160. const/4 v0, 0x0
  161. :goto_0
  162. return v0
  163. .end method
  164. .method public final isEmpty()Z
  165. .locals 2
  166. .line 172
  167. invoke-virtual {p0}, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->get()I
  168. move-result v0
  169. const/16 v1, 0x10
  170. if-eq v0, v1, :cond_0
  171. const/4 v0, 0x1
  172. goto :goto_0
  173. :cond_0
  174. const/4 v0, 0x0
  175. :goto_0
  176. return v0
  177. .end method
  178. .method public final poll()Ljava/lang/Object;
  179. .locals 3
  180. .annotation system Ldalvik/annotation/Signature;
  181. value = {
  182. "()TT;"
  183. }
  184. .end annotation
  185. .line 161
  186. invoke-virtual {p0}, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->get()I
  187. move-result v0
  188. const/4 v1, 0x0
  189. const/16 v2, 0x10
  190. if-ne v0, v2, :cond_0
  191. const/16 v0, 0x20
  192. .line 162
  193. invoke-virtual {p0, v0}, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->lazySet(I)V
  194. .line 163
  195. iget-object v0, p0, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->value:Ljava/lang/Object;
  196. .line 164
  197. iput-object v1, p0, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->value:Ljava/lang/Object;
  198. return-object v0
  199. :cond_0
  200. return-object v1
  201. .end method
  202. .method public final request(J)V
  203. .locals 1
  204. .line 74
  205. invoke-static {p1, p2}, Lio/reactivex/internal/subscriptions/SubscriptionHelper;->validate(J)Z
  206. move-result p1
  207. if-eqz p1, :cond_4
  208. .line 76
  209. :cond_0
  210. invoke-virtual {p0}, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->get()I
  211. move-result p1
  212. and-int/lit8 p2, p1, -0x2
  213. if-eqz p2, :cond_1
  214. return-void
  215. :cond_1
  216. const/4 p2, 0x1
  217. if-ne p1, p2, :cond_3
  218. const/4 p1, 0x3
  219. .line 83
  220. invoke-virtual {p0, p2, p1}, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->compareAndSet(II)Z
  221. move-result p1
  222. if-eqz p1, :cond_2
  223. .line 84
  224. iget-object p1, p0, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->value:Ljava/lang/Object;
  225. if-eqz p1, :cond_2
  226. const/4 p2, 0x0
  227. .line 86
  228. iput-object p2, p0, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->value:Ljava/lang/Object;
  229. .line 87
  230. iget-object p2, p0, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->actual:Lorg/reactivestreams/Subscriber;
  231. .line 88
  232. invoke-interface {p2, p1}, Lorg/reactivestreams/Subscriber;->onNext(Ljava/lang/Object;)V
  233. .line 89
  234. invoke-virtual {p0}, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->get()I
  235. move-result p1
  236. const/4 v0, 0x4
  237. if-eq p1, v0, :cond_2
  238. .line 90
  239. invoke-interface {p2}, Lorg/reactivestreams/Subscriber;->onComplete()V
  240. :cond_2
  241. return-void
  242. :cond_3
  243. const/4 p1, 0x0
  244. const/4 p2, 0x2
  245. .line 96
  246. invoke-virtual {p0, p1, p2}, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->compareAndSet(II)Z
  247. move-result p1
  248. if-eqz p1, :cond_0
  249. :cond_4
  250. return-void
  251. .end method
  252. .method public final requestFusion(I)I
  253. .locals 1
  254. const/4 v0, 0x2
  255. and-int/2addr p1, v0
  256. if-eqz p1, :cond_0
  257. const/16 p1, 0x8
  258. .line 153
  259. invoke-virtual {p0, p1}, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->lazySet(I)V
  260. return v0
  261. :cond_0
  262. const/4 p1, 0x0
  263. return p1
  264. .end method
  265. .method public final tryCancel()Z
  266. .locals 2
  267. const/4 v0, 0x4
  268. .line 201
  269. invoke-virtual {p0, v0}, Lio/reactivex/internal/subscriptions/DeferredScalarSubscription;->getAndSet(I)I
  270. move-result v1
  271. if-eq v1, 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