IoScheduler$EventLoopWorker.smali 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. .class final Lio/reactivex/internal/schedulers/IoScheduler$EventLoopWorker;
  2. .super Lio/reactivex/Scheduler$Worker;
  3. .source "IoScheduler.java"
  4. # annotations
  5. .annotation system Ldalvik/annotation/EnclosingClass;
  6. value = Lio/reactivex/internal/schedulers/IoScheduler;
  7. .end annotation
  8. .annotation system Ldalvik/annotation/InnerClass;
  9. accessFlags = 0x18
  10. name = "EventLoopWorker"
  11. .end annotation
  12. # instance fields
  13. .field final once:Ljava/util/concurrent/atomic/AtomicBoolean;
  14. .field private final pool:Lio/reactivex/internal/schedulers/IoScheduler$CachedWorkerPool;
  15. .field private final tasks:Lio/reactivex/disposables/CompositeDisposable;
  16. .field private final threadWorker:Lio/reactivex/internal/schedulers/IoScheduler$ThreadWorker;
  17. # direct methods
  18. .method constructor <init>(Lio/reactivex/internal/schedulers/IoScheduler$CachedWorkerPool;)V
  19. .locals 1
  20. .line 199
  21. invoke-direct {p0}, Lio/reactivex/Scheduler$Worker;-><init>()V
  22. .line 197
  23. new-instance v0, Ljava/util/concurrent/atomic/AtomicBoolean;
  24. invoke-direct {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;-><init>()V
  25. iput-object v0, p0, Lio/reactivex/internal/schedulers/IoScheduler$EventLoopWorker;->once:Ljava/util/concurrent/atomic/AtomicBoolean;
  26. .line 200
  27. iput-object p1, p0, Lio/reactivex/internal/schedulers/IoScheduler$EventLoopWorker;->pool:Lio/reactivex/internal/schedulers/IoScheduler$CachedWorkerPool;
  28. .line 201
  29. new-instance v0, Lio/reactivex/disposables/CompositeDisposable;
  30. invoke-direct {v0}, Lio/reactivex/disposables/CompositeDisposable;-><init>()V
  31. iput-object v0, p0, Lio/reactivex/internal/schedulers/IoScheduler$EventLoopWorker;->tasks:Lio/reactivex/disposables/CompositeDisposable;
  32. .line 202
  33. invoke-virtual {p1}, Lio/reactivex/internal/schedulers/IoScheduler$CachedWorkerPool;->get()Lio/reactivex/internal/schedulers/IoScheduler$ThreadWorker;
  34. move-result-object p1
  35. iput-object p1, p0, Lio/reactivex/internal/schedulers/IoScheduler$EventLoopWorker;->threadWorker:Lio/reactivex/internal/schedulers/IoScheduler$ThreadWorker;
  36. return-void
  37. .end method
  38. # virtual methods
  39. .method public dispose()V
  40. .locals 3
  41. .line 207
  42. iget-object v0, p0, Lio/reactivex/internal/schedulers/IoScheduler$EventLoopWorker;->once:Ljava/util/concurrent/atomic/AtomicBoolean;
  43. const/4 v1, 0x0
  44. const/4 v2, 0x1
  45. invoke-virtual {v0, v1, v2}, Ljava/util/concurrent/atomic/AtomicBoolean;->compareAndSet(ZZ)Z
  46. move-result v0
  47. if-eqz v0, :cond_0
  48. .line 208
  49. iget-object v0, p0, Lio/reactivex/internal/schedulers/IoScheduler$EventLoopWorker;->tasks:Lio/reactivex/disposables/CompositeDisposable;
  50. invoke-virtual {v0}, Lio/reactivex/disposables/CompositeDisposable;->dispose()V
  51. .line 217
  52. iget-object v0, p0, Lio/reactivex/internal/schedulers/IoScheduler$EventLoopWorker;->pool:Lio/reactivex/internal/schedulers/IoScheduler$CachedWorkerPool;
  53. iget-object v1, p0, Lio/reactivex/internal/schedulers/IoScheduler$EventLoopWorker;->threadWorker:Lio/reactivex/internal/schedulers/IoScheduler$ThreadWorker;
  54. invoke-virtual {v0, v1}, Lio/reactivex/internal/schedulers/IoScheduler$CachedWorkerPool;->release(Lio/reactivex/internal/schedulers/IoScheduler$ThreadWorker;)V
  55. :cond_0
  56. return-void
  57. .end method
  58. .method public isDisposed()Z
  59. .locals 1
  60. .line 223
  61. iget-object v0, p0, Lio/reactivex/internal/schedulers/IoScheduler$EventLoopWorker;->once:Ljava/util/concurrent/atomic/AtomicBoolean;
  62. invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->get()Z
  63. move-result v0
  64. return v0
  65. .end method
  66. .method public schedule(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Lio/reactivex/disposables/Disposable;
  67. .locals 6
  68. .line 228
  69. iget-object v0, p0, Lio/reactivex/internal/schedulers/IoScheduler$EventLoopWorker;->tasks:Lio/reactivex/disposables/CompositeDisposable;
  70. invoke-virtual {v0}, Lio/reactivex/disposables/CompositeDisposable;->isDisposed()Z
  71. move-result v0
  72. if-eqz v0, :cond_0
  73. .line 230
  74. sget-object p1, Lio/reactivex/internal/disposables/EmptyDisposable;->INSTANCE:Lio/reactivex/internal/disposables/EmptyDisposable;
  75. return-object p1
  76. .line 233
  77. :cond_0
  78. iget-object v0, p0, Lio/reactivex/internal/schedulers/IoScheduler$EventLoopWorker;->threadWorker:Lio/reactivex/internal/schedulers/IoScheduler$ThreadWorker;
  79. iget-object v5, p0, Lio/reactivex/internal/schedulers/IoScheduler$EventLoopWorker;->tasks:Lio/reactivex/disposables/CompositeDisposable;
  80. move-object v1, p1
  81. move-wide v2, p2
  82. move-object v4, p4
  83. invoke-virtual/range {v0 .. v5}, Lio/reactivex/internal/schedulers/IoScheduler$ThreadWorker;->scheduleActual(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;Lio/reactivex/internal/disposables/DisposableContainer;)Lio/reactivex/internal/schedulers/ScheduledRunnable;
  84. move-result-object p1
  85. return-object p1
  86. .end method