AsyncSubscription.smali 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. .class public final Lio/reactivex/internal/subscriptions/AsyncSubscription;
  2. .super Ljava/util/concurrent/atomic/AtomicLong;
  3. .source "AsyncSubscription.java"
  4. # interfaces
  5. .implements Lorg/reactivestreams/Subscription;
  6. .implements Lio/reactivex/disposables/Disposable;
  7. # static fields
  8. .field private static final serialVersionUID:J = 0x618aba5ea1440227L
  9. # instance fields
  10. .field final actual:Ljava/util/concurrent/atomic/AtomicReference;
  11. .annotation system Ldalvik/annotation/Signature;
  12. value = {
  13. "Ljava/util/concurrent/atomic/AtomicReference<",
  14. "Lorg/reactivestreams/Subscription;",
  15. ">;"
  16. }
  17. .end annotation
  18. .end field
  19. .field final resource:Ljava/util/concurrent/atomic/AtomicReference;
  20. .annotation system Ldalvik/annotation/Signature;
  21. value = {
  22. "Ljava/util/concurrent/atomic/AtomicReference<",
  23. "Lio/reactivex/disposables/Disposable;",
  24. ">;"
  25. }
  26. .end annotation
  27. .end field
  28. # direct methods
  29. .method public constructor <init>()V
  30. .locals 1
  31. .line 37
  32. invoke-direct {p0}, Ljava/util/concurrent/atomic/AtomicLong;-><init>()V
  33. .line 38
  34. new-instance v0, Ljava/util/concurrent/atomic/AtomicReference;
  35. invoke-direct {v0}, Ljava/util/concurrent/atomic/AtomicReference;-><init>()V
  36. iput-object v0, p0, Lio/reactivex/internal/subscriptions/AsyncSubscription;->resource:Ljava/util/concurrent/atomic/AtomicReference;
  37. .line 39
  38. new-instance v0, Ljava/util/concurrent/atomic/AtomicReference;
  39. invoke-direct {v0}, Ljava/util/concurrent/atomic/AtomicReference;-><init>()V
  40. iput-object v0, p0, Lio/reactivex/internal/subscriptions/AsyncSubscription;->actual:Ljava/util/concurrent/atomic/AtomicReference;
  41. return-void
  42. .end method
  43. .method public constructor <init>(Lio/reactivex/disposables/Disposable;)V
  44. .locals 1
  45. .line 43
  46. invoke-direct {p0}, Lio/reactivex/internal/subscriptions/AsyncSubscription;-><init>()V
  47. .line 44
  48. iget-object v0, p0, Lio/reactivex/internal/subscriptions/AsyncSubscription;->resource:Ljava/util/concurrent/atomic/AtomicReference;
  49. invoke-virtual {v0, p1}, Ljava/util/concurrent/atomic/AtomicReference;->lazySet(Ljava/lang/Object;)V
  50. return-void
  51. .end method
  52. # virtual methods
  53. .method public cancel()V
  54. .locals 0
  55. .line 54
  56. invoke-virtual {p0}, Lio/reactivex/internal/subscriptions/AsyncSubscription;->dispose()V
  57. return-void
  58. .end method
  59. .method public dispose()V
  60. .locals 1
  61. .line 59
  62. iget-object v0, p0, Lio/reactivex/internal/subscriptions/AsyncSubscription;->actual:Ljava/util/concurrent/atomic/AtomicReference;
  63. invoke-static {v0}, Lio/reactivex/internal/subscriptions/SubscriptionHelper;->cancel(Ljava/util/concurrent/atomic/AtomicReference;)Z
  64. .line 60
  65. iget-object v0, p0, Lio/reactivex/internal/subscriptions/AsyncSubscription;->resource:Ljava/util/concurrent/atomic/AtomicReference;
  66. invoke-static {v0}, Lio/reactivex/internal/disposables/DisposableHelper;->dispose(Ljava/util/concurrent/atomic/AtomicReference;)Z
  67. return-void
  68. .end method
  69. .method public isDisposed()Z
  70. .locals 2
  71. .line 65
  72. iget-object v0, p0, Lio/reactivex/internal/subscriptions/AsyncSubscription;->actual:Ljava/util/concurrent/atomic/AtomicReference;
  73. invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
  74. move-result-object v0
  75. sget-object v1, Lio/reactivex/internal/subscriptions/SubscriptionHelper;->CANCELLED:Lio/reactivex/internal/subscriptions/SubscriptionHelper;
  76. if-ne v0, v1, :cond_0
  77. const/4 v0, 0x1
  78. goto :goto_0
  79. :cond_0
  80. const/4 v0, 0x0
  81. :goto_0
  82. return v0
  83. .end method
  84. .method public replaceResource(Lio/reactivex/disposables/Disposable;)Z
  85. .locals 1
  86. .line 84
  87. iget-object v0, p0, Lio/reactivex/internal/subscriptions/AsyncSubscription;->resource:Ljava/util/concurrent/atomic/AtomicReference;
  88. invoke-static {v0, p1}, Lio/reactivex/internal/disposables/DisposableHelper;->replace(Ljava/util/concurrent/atomic/AtomicReference;Lio/reactivex/disposables/Disposable;)Z
  89. move-result p1
  90. return p1
  91. .end method
  92. .method public request(J)V
  93. .locals 1
  94. .line 49
  95. iget-object v0, p0, Lio/reactivex/internal/subscriptions/AsyncSubscription;->actual:Ljava/util/concurrent/atomic/AtomicReference;
  96. invoke-static {v0, p0, p1, p2}, Lio/reactivex/internal/subscriptions/SubscriptionHelper;->deferredRequest(Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicLong;J)V
  97. return-void
  98. .end method
  99. .method public setResource(Lio/reactivex/disposables/Disposable;)Z
  100. .locals 1
  101. .line 75
  102. iget-object v0, p0, Lio/reactivex/internal/subscriptions/AsyncSubscription;->resource:Ljava/util/concurrent/atomic/AtomicReference;
  103. invoke-static {v0, p1}, Lio/reactivex/internal/disposables/DisposableHelper;->set(Ljava/util/concurrent/atomic/AtomicReference;Lio/reactivex/disposables/Disposable;)Z
  104. move-result p1
  105. return p1
  106. .end method
  107. .method public setSubscription(Lorg/reactivestreams/Subscription;)V
  108. .locals 1
  109. .line 92
  110. iget-object v0, p0, Lio/reactivex/internal/subscriptions/AsyncSubscription;->actual:Ljava/util/concurrent/atomic/AtomicReference;
  111. invoke-static {v0, p0, p1}, Lio/reactivex/internal/subscriptions/SubscriptionHelper;->deferredSetOnce(Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicLong;Lorg/reactivestreams/Subscription;)Z
  112. return-void
  113. .end method