BlockingBaseObserver.smali 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. .class public abstract Lio/reactivex/internal/observers/BlockingBaseObserver;
  2. .super Ljava/util/concurrent/CountDownLatch;
  3. .source "BlockingBaseObserver.java"
  4. # interfaces
  5. .implements Lio/reactivex/Observer;
  6. .implements Lio/reactivex/disposables/Disposable;
  7. # annotations
  8. .annotation system Ldalvik/annotation/Signature;
  9. value = {
  10. "<T:",
  11. "Ljava/lang/Object;",
  12. ">",
  13. "Ljava/util/concurrent/CountDownLatch;",
  14. "Lio/reactivex/Observer<",
  15. "TT;>;",
  16. "Lio/reactivex/disposables/Disposable;"
  17. }
  18. .end annotation
  19. # instance fields
  20. .field volatile cancelled:Z
  21. .field d:Lio/reactivex/disposables/Disposable;
  22. .field error:Ljava/lang/Throwable;
  23. .field value:Ljava/lang/Object;
  24. .annotation system Ldalvik/annotation/Signature;
  25. value = {
  26. "TT;"
  27. }
  28. .end annotation
  29. .end field
  30. # direct methods
  31. .method public constructor <init>()V
  32. .locals 1
  33. const/4 v0, 0x1
  34. .line 32
  35. invoke-direct {p0, v0}, Ljava/util/concurrent/CountDownLatch;-><init>(I)V
  36. return-void
  37. .end method
  38. # virtual methods
  39. .method public final blockingGet()Ljava/lang/Object;
  40. .locals 5
  41. .annotation system Ldalvik/annotation/Signature;
  42. value = {
  43. "()TT;"
  44. }
  45. .end annotation
  46. .line 68
  47. invoke-virtual {p0}, Lio/reactivex/internal/observers/BlockingBaseObserver;->getCount()J
  48. move-result-wide v0
  49. const-wide/16 v2, 0x0
  50. cmp-long v4, v0, v2
  51. if-eqz v4, :cond_0
  52. .line 70
  53. :try_start_0
  54. invoke-static {}, Lio/reactivex/internal/util/BlockingHelper;->verifyNonBlocking()V
  55. .line 71
  56. invoke-virtual {p0}, Lio/reactivex/internal/observers/BlockingBaseObserver;->await()V
  57. :try_end_0
  58. .catch Ljava/lang/InterruptedException; {:try_start_0 .. :try_end_0} :catch_0
  59. goto :goto_0
  60. :catch_0
  61. move-exception v0
  62. .line 73
  63. invoke-virtual {p0}, Lio/reactivex/internal/observers/BlockingBaseObserver;->dispose()V
  64. .line 74
  65. invoke-static {v0}, Lio/reactivex/internal/util/ExceptionHelper;->wrapOrThrow(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
  66. move-result-object v0
  67. throw v0
  68. .line 78
  69. :cond_0
  70. :goto_0
  71. iget-object v0, p0, Lio/reactivex/internal/observers/BlockingBaseObserver;->error:Ljava/lang/Throwable;
  72. if-nez v0, :cond_1
  73. .line 82
  74. iget-object v0, p0, Lio/reactivex/internal/observers/BlockingBaseObserver;->value:Ljava/lang/Object;
  75. return-object v0
  76. .line 80
  77. :cond_1
  78. invoke-static {v0}, Lio/reactivex/internal/util/ExceptionHelper;->wrapOrThrow(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
  79. move-result-object v0
  80. throw v0
  81. .end method
  82. .method public final dispose()V
  83. .locals 1
  84. const/4 v0, 0x1
  85. .line 50
  86. iput-boolean v0, p0, Lio/reactivex/internal/observers/BlockingBaseObserver;->cancelled:Z
  87. .line 51
  88. iget-object v0, p0, Lio/reactivex/internal/observers/BlockingBaseObserver;->d:Lio/reactivex/disposables/Disposable;
  89. if-eqz v0, :cond_0
  90. .line 53
  91. invoke-interface {v0}, Lio/reactivex/disposables/Disposable;->dispose()V
  92. :cond_0
  93. return-void
  94. .end method
  95. .method public final isDisposed()Z
  96. .locals 1
  97. .line 59
  98. iget-boolean v0, p0, Lio/reactivex/internal/observers/BlockingBaseObserver;->cancelled:Z
  99. return v0
  100. .end method
  101. .method public final onComplete()V
  102. .locals 0
  103. .line 45
  104. invoke-virtual {p0}, Lio/reactivex/internal/observers/BlockingBaseObserver;->countDown()V
  105. return-void
  106. .end method
  107. .method public final onSubscribe(Lio/reactivex/disposables/Disposable;)V
  108. .locals 1
  109. .line 37
  110. iput-object p1, p0, Lio/reactivex/internal/observers/BlockingBaseObserver;->d:Lio/reactivex/disposables/Disposable;
  111. .line 38
  112. iget-boolean v0, p0, Lio/reactivex/internal/observers/BlockingBaseObserver;->cancelled:Z
  113. if-eqz v0, :cond_0
  114. .line 39
  115. invoke-interface {p1}, Lio/reactivex/disposables/Disposable;->dispose()V
  116. :cond_0
  117. return-void
  118. .end method