override fun close()

in hot-reload-core/src/main/kotlin/org/jetbrains/compose/reload/core/Actor.kt [59:84]


    override fun close(error: Throwable?): Boolean {
        val exception = error ?: ActorClosedException()

        val previousState = state.update {
            if (it is State.Closed) return false
            State.Closed(exception)
        }.previous


        launchTask("ActorImpl.close") {
            queue.send(QueueClosed)

            if (previousState is State.Processing) {
                previousState.future.await()
            }

            while (isActive()) {
                when (val element = queue.receive()) {
                    is QueueClosed -> continue
                    is CompletableInput<*, *> -> element.future.completeExceptionally(exception)
                }
            }
        }

        return true
    }