NewThreadWorker.smali 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. .class public Lio/reactivex/internal/schedulers/NewThreadWorker;
  2. .super Lio/reactivex/Scheduler$Worker;
  3. .source "NewThreadWorker.java"
  4. # interfaces
  5. .implements Lio/reactivex/disposables/Disposable;
  6. # instance fields
  7. .field volatile disposed:Z
  8. .field private final executor:Ljava/util/concurrent/ScheduledExecutorService;
  9. # direct methods
  10. .method public constructor <init>(Ljava/util/concurrent/ThreadFactory;)V
  11. .locals 0
  12. .line 33
  13. invoke-direct {p0}, Lio/reactivex/Scheduler$Worker;-><init>()V
  14. .line 34
  15. invoke-static {p1}, Lio/reactivex/internal/schedulers/SchedulerPoolFactory;->create(Ljava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ScheduledExecutorService;
  16. move-result-object p1
  17. iput-object p1, p0, Lio/reactivex/internal/schedulers/NewThreadWorker;->executor:Ljava/util/concurrent/ScheduledExecutorService;
  18. return-void
  19. .end method
  20. # virtual methods
  21. .method public dispose()V
  22. .locals 1
  23. .line 135
  24. iget-boolean v0, p0, Lio/reactivex/internal/schedulers/NewThreadWorker;->disposed:Z
  25. if-nez v0, :cond_0
  26. const/4 v0, 0x1
  27. .line 136
  28. iput-boolean v0, p0, Lio/reactivex/internal/schedulers/NewThreadWorker;->disposed:Z
  29. .line 137
  30. iget-object v0, p0, Lio/reactivex/internal/schedulers/NewThreadWorker;->executor:Ljava/util/concurrent/ScheduledExecutorService;
  31. invoke-interface {v0}, Ljava/util/concurrent/ScheduledExecutorService;->shutdownNow()Ljava/util/List;
  32. :cond_0
  33. return-void
  34. .end method
  35. .method public isDisposed()Z
  36. .locals 1
  37. .line 143
  38. iget-boolean v0, p0, Lio/reactivex/internal/schedulers/NewThreadWorker;->disposed:Z
  39. return v0
  40. .end method
  41. .method public schedule(Ljava/lang/Runnable;)Lio/reactivex/disposables/Disposable;
  42. .locals 3
  43. const-wide/16 v0, 0x0
  44. const/4 v2, 0x0
  45. .line 39
  46. invoke-virtual {p0, p1, v0, v1, v2}, Lio/reactivex/internal/schedulers/NewThreadWorker;->schedule(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Lio/reactivex/disposables/Disposable;
  47. move-result-object p1
  48. return-object p1
  49. .end method
  50. .method public schedule(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Lio/reactivex/disposables/Disposable;
  51. .locals 6
  52. .line 44
  53. iget-boolean v0, p0, Lio/reactivex/internal/schedulers/NewThreadWorker;->disposed:Z
  54. if-eqz v0, :cond_0
  55. .line 45
  56. sget-object p1, Lio/reactivex/internal/disposables/EmptyDisposable;->INSTANCE:Lio/reactivex/internal/disposables/EmptyDisposable;
  57. return-object p1
  58. :cond_0
  59. const/4 v5, 0x0
  60. move-object v0, p0
  61. move-object v1, p1
  62. move-wide v2, p2
  63. move-object v4, p4
  64. .line 47
  65. invoke-virtual/range {v0 .. v5}, Lio/reactivex/internal/schedulers/NewThreadWorker;->scheduleActual(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;Lio/reactivex/internal/disposables/DisposableContainer;)Lio/reactivex/internal/schedulers/ScheduledRunnable;
  66. move-result-object p1
  67. return-object p1
  68. .end method
  69. .method public scheduleActual(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;Lio/reactivex/internal/disposables/DisposableContainer;)Lio/reactivex/internal/schedulers/ScheduledRunnable;
  70. .locals 3
  71. .line 107
  72. invoke-static {p1}, Lio/reactivex/plugins/RxJavaPlugins;->onSchedule(Ljava/lang/Runnable;)Ljava/lang/Runnable;
  73. move-result-object p1
  74. .line 109
  75. new-instance v0, Lio/reactivex/internal/schedulers/ScheduledRunnable;
  76. invoke-direct {v0, p1, p5}, Lio/reactivex/internal/schedulers/ScheduledRunnable;-><init>(Ljava/lang/Runnable;Lio/reactivex/internal/disposables/DisposableContainer;)V
  77. if-eqz p5, :cond_0
  78. .line 112
  79. invoke-interface {p5, v0}, Lio/reactivex/internal/disposables/DisposableContainer;->add(Lio/reactivex/disposables/Disposable;)Z
  80. move-result p1
  81. if-nez p1, :cond_0
  82. return-object v0
  83. :cond_0
  84. const-wide/16 v1, 0x0
  85. cmp-long p1, p2, v1
  86. if-gtz p1, :cond_1
  87. .line 120
  88. :try_start_0
  89. iget-object p1, p0, Lio/reactivex/internal/schedulers/NewThreadWorker;->executor:Ljava/util/concurrent/ScheduledExecutorService;
  90. invoke-interface {p1, v0}, Ljava/util/concurrent/ScheduledExecutorService;->submit(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future;
  91. move-result-object p1
  92. goto :goto_0
  93. .line 122
  94. :cond_1
  95. iget-object p1, p0, Lio/reactivex/internal/schedulers/NewThreadWorker;->executor:Ljava/util/concurrent/ScheduledExecutorService;
  96. invoke-interface {p1, v0, p2, p3, p4}, Ljava/util/concurrent/ScheduledExecutorService;->schedule(Ljava/util/concurrent/Callable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
  97. move-result-object p1
  98. .line 124
  99. :goto_0
  100. invoke-virtual {v0, p1}, Lio/reactivex/internal/schedulers/ScheduledRunnable;->setFuture(Ljava/util/concurrent/Future;)V
  101. :try_end_0
  102. .catch Ljava/util/concurrent/RejectedExecutionException; {:try_start_0 .. :try_end_0} :catch_0
  103. goto :goto_1
  104. :catch_0
  105. move-exception p1
  106. .line 126
  107. invoke-interface {p5, v0}, Lio/reactivex/internal/disposables/DisposableContainer;->remove(Lio/reactivex/disposables/Disposable;)Z
  108. .line 127
  109. invoke-static {p1}, Lio/reactivex/plugins/RxJavaPlugins;->onError(Ljava/lang/Throwable;)V
  110. :goto_1
  111. return-object v0
  112. .end method
  113. .method public scheduleDirect(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Lio/reactivex/disposables/Disposable;
  114. .locals 3
  115. .line 59
  116. invoke-static {p1}, Lio/reactivex/plugins/RxJavaPlugins;->onSchedule(Ljava/lang/Runnable;)Ljava/lang/Runnable;
  117. move-result-object p1
  118. const-wide/16 v0, 0x0
  119. cmp-long v2, p2, v0
  120. if-gtz v2, :cond_0
  121. .line 63
  122. :try_start_0
  123. iget-object p2, p0, Lio/reactivex/internal/schedulers/NewThreadWorker;->executor:Ljava/util/concurrent/ScheduledExecutorService;
  124. invoke-interface {p2, p1}, Ljava/util/concurrent/ScheduledExecutorService;->submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future;
  125. move-result-object p1
  126. goto :goto_0
  127. .line 65
  128. :cond_0
  129. iget-object v0, p0, Lio/reactivex/internal/schedulers/NewThreadWorker;->executor:Ljava/util/concurrent/ScheduledExecutorService;
  130. invoke-interface {v0, p1, p2, p3, p4}, Ljava/util/concurrent/ScheduledExecutorService;->schedule(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
  131. move-result-object p1
  132. .line 67
  133. :goto_0
  134. invoke-static {p1}, Lio/reactivex/disposables/Disposables;->fromFuture(Ljava/util/concurrent/Future;)Lio/reactivex/disposables/Disposable;
  135. move-result-object p1
  136. :try_end_0
  137. .catch Ljava/util/concurrent/RejectedExecutionException; {:try_start_0 .. :try_end_0} :catch_0
  138. return-object p1
  139. :catch_0
  140. move-exception p1
  141. .line 69
  142. invoke-static {p1}, Lio/reactivex/plugins/RxJavaPlugins;->onError(Ljava/lang/Throwable;)V
  143. .line 70
  144. sget-object p1, Lio/reactivex/internal/disposables/EmptyDisposable;->INSTANCE:Lio/reactivex/internal/disposables/EmptyDisposable;
  145. return-object p1
  146. .end method
  147. .method public schedulePeriodicallyDirect(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Lio/reactivex/disposables/Disposable;
  148. .locals 7
  149. .line 84
  150. invoke-static {p1}, Lio/reactivex/plugins/RxJavaPlugins;->onSchedule(Ljava/lang/Runnable;)Ljava/lang/Runnable;
  151. move-result-object v1
  152. .line 86
  153. :try_start_0
  154. iget-object v0, p0, Lio/reactivex/internal/schedulers/NewThreadWorker;->executor:Ljava/util/concurrent/ScheduledExecutorService;
  155. move-wide v2, p2
  156. move-wide v4, p4
  157. move-object v6, p6
  158. invoke-interface/range {v0 .. v6}, Ljava/util/concurrent/ScheduledExecutorService;->scheduleAtFixedRate(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
  159. move-result-object p1
  160. .line 87
  161. invoke-static {p1}, Lio/reactivex/disposables/Disposables;->fromFuture(Ljava/util/concurrent/Future;)Lio/reactivex/disposables/Disposable;
  162. move-result-object p1
  163. :try_end_0
  164. .catch Ljava/util/concurrent/RejectedExecutionException; {:try_start_0 .. :try_end_0} :catch_0
  165. return-object p1
  166. :catch_0
  167. move-exception p1
  168. .line 89
  169. invoke-static {p1}, Lio/reactivex/plugins/RxJavaPlugins;->onError(Ljava/lang/Throwable;)V
  170. .line 90
  171. sget-object p1, Lio/reactivex/internal/disposables/EmptyDisposable;->INSTANCE:Lio/reactivex/internal/disposables/EmptyDisposable;
  172. return-object p1
  173. .end method