BaseManager
Базовый каркас менеджера (процесса) с единым жизненным циклом и интеграцией с PMON.
Ответственности:
Инициализация конфигурации и регистрация клиента PMON в beforeInit.
Определение точки входа run, которая последовательно вызывает beforeInit и init.
Унифицированная схема готовности: у каждого менеджера есть checklist. Когда все флаги чеклиста станут
true, базовая реализация вызовет ready, которая отправляет сигнал готовности в PMON.
Как использовать:
Наследуйтесь от
BaseManager.Укажите тип менеджера в managerType.
Реализуйте init, в ней запустите ваши подключения/воркеры.
Объявляйте флаги готовности как
var x by checklist.watch()и устанавливайте их вtrueпо мере завершения шагов инициализации. Когда все такие флаги станутtrue, вызовется ready.
Потоковая модель:
Стандартный Checklist из
ru.sydis.baseне предоставляет гарантий потокобезопасности. Если флаги изменяются из разных потоков, используйте потокобезопасный вариант чеклиста или синхронизируйте записи самостоятельно.
Пример:
object GatewayManager : BaseManager() {
override val managerType = ProtoManType.GTW_MAN
var messageIsReady by checklist.watch()
var subscriptionIsReady by checklist.watch()
override fun init(args: Array<out String>) {
// ... подключение брокеров, запуск потоков ...
messageIsReady = true
subscriptionIsReady = true
}
@JvmStatic fun main(vararg args: String) = run(args)
}