@@ -261,7 +261,7 @@ internal abstract class EventLoopBase: CoroutineDispatcher(), Delay, EventLoop {
261
261
_delayed .compareAndSet(null , ThreadSafeHeap ())
262
262
_delayed .value!!
263
263
}
264
- return delayedTask.schedule(delayed)
264
+ return delayedTask.schedule(delayed, this )
265
265
}
266
266
267
267
internal fun removeDelayedImpl (delayedTask : DelayedTask ) {
@@ -289,7 +289,7 @@ internal abstract class EventLoopBase: CoroutineDispatcher(), Delay, EventLoop {
289
289
}
290
290
}
291
291
292
- internal abstract inner class DelayedTask (
292
+ internal abstract class DelayedTask (
293
293
timeMillis : Long
294
294
) : Runnable, Comparable<DelayedTask>, DisposableHandle, ThreadSafeHeapNode {
295
295
private var _heap : Any? = null // null | ThreadSafeHeap | DISPOSED_TASK
@@ -317,9 +317,9 @@ internal abstract class EventLoopBase: CoroutineDispatcher(), Delay, EventLoop {
317
317
fun timeToExecute (now : Long ): Boolean = now - nanoTime >= 0L
318
318
319
319
@Synchronized
320
- fun schedule (delayed : ThreadSafeHeap <DelayedTask >): Int {
320
+ fun schedule (delayed : ThreadSafeHeap <DelayedTask >, eventLoop : EventLoopBase ): Int {
321
321
if (_heap == = DISPOSED_TASK ) return SCHEDULE_DISPOSED // don't add -- was already disposed
322
- return if (delayed.addLastIf(this ) { ! isCompleted }) SCHEDULE_OK else SCHEDULE_COMPLETED
322
+ return if (delayed.addLastIf(this ) { ! eventLoop. isCompleted }) SCHEDULE_OK else SCHEDULE_COMPLETED
323
323
}
324
324
325
325
// note: DefaultExecutor.schedule performs `schedule` (above) which does sync & checks for DISPOSED_TASK
@@ -352,7 +352,7 @@ internal abstract class EventLoopBase: CoroutineDispatcher(), Delay, EventLoop {
352
352
}
353
353
354
354
// Cannot be moved to DefaultExecutor due to BE bug
355
- internal inner class DelayedRunnableTask (
355
+ internal class DelayedRunnableTask (
356
356
time : Long ,
357
357
private val block : Runnable
358
358
) : DelayedTask(time) {
0 commit comments