Checklist

open class Checklist

Чеклист готовности с авто-трекером флагов.

Класс позволяет объявлять булевы флаги как делегированные свойства (var x by checklist.watch()). Каждый флаг автоматически регистрируется внутри чеклиста при создании делегата. Когда все зарегистрированные флаги становятся true хотя бы один раз, чеклист однократно вызывает allChecksIsReady (по умолчанию — публикует событие готовности в EventBus).

Особенности:

  • Авто-регистрация: не требуется вручную перечислять поля чеклиста — всё, что создано через watch, учитывается.

  • Однократный вызов: allChecksIsReady срабатывает ровно один раз за жизненный цикл экземпляра, до вызова reset.

  • Ленивая модель: флаги считаются зарегистрированными с момента создания делегата (вызова watch).

  • Потоковая модель: реализация не синхронизирована и не гарантирует атомарность/видимость между потоками. Используйте из одного потока или добавьте собственную синхронизацию/атомики при необходимости.

Ограничения:

  • Список флагов фиксируется фактом создания делегатов. Динамическое «удаление» флага не поддерживается.

  • reset сбрасывает только признак «стреляли/не стреляли». Значения флагов не изменяются.

Пример:

class MyManager {
private val checklist = Checklist()

var configLoaded by checklist.watch()
var brokerConnected by checklist.watch()

fun init() {
configLoaded = true
brokerConnected = true
// когда оба флага true — onAllTrue() сработает один раз
}
}

See also

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard

Флаг сработки чеклиста готовности

Functions

Link copied to clipboard
fun reset()

Сбрасывает внутренний признак «срабатывания» allChecksIsReady, позволяя повторное срабатывание после последующих изменений флагов.

Link copied to clipboard
fun watch(initial: Boolean = false): ReadWriteProperty<Any?, Boolean>

Создает делегат булевого флага, отслеживаемого чеклистом.