-
Notifications
You must be signed in to change notification settings - Fork 0
/
bootstrap.go
75 lines (62 loc) · 3.33 KB
/
bootstrap.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
// Package bootstrap
package bootstrap
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Компонента не выполняет никакой полезной нагрузки, предназначена для определения опорной точки,
// после которой приложение полностью инициализировано и готово к работе.
// В последующих компонентах приложения, достаточно указать то, что они выполняются после компоненты bootstrap,
// вместо перечисления всех необходимых для работы компонентов.
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
import (
kitModuleCfg "github.com/webnice/kit/v3/module/cfg"
kitModuleCfgReg "github.com/webnice/kit/v3/module/cfg/reg"
kitTypes "github.com/webnice/kit/v3/types"
)
const tplApplicationFullStart = "Приложение полностью инициализировано."
// Структура объекта компоненты.
type impl struct {
cfg kitModuleCfg.Interface
}
// Регистрация компоненты в приложении.
func init() { kitModuleCfgReg.Registration(newComponent()) }
// Конструктор объекта компоненты.
func newComponent() kitTypes.Component { return &impl{cfg: kitModuleCfg.Get()} }
// Ссылка на функцию получения значения режима отладки, для удобного использования внутри компоненты.
func (brp *impl) debug() bool { return brp.cfg.Debug() }
// Ссылка на менеджер логирования, для удобного использования внутри компоненты.
func (brp *impl) log() kitTypes.Logger { return brp.cfg.Log() }
// Preferences Функция возвращает настройки компоненты.
func (brp *impl) Preferences() kitTypes.ComponentPreferences {
const (
cEnvironment = `(?mi)application/component/environment$`
cInterrupt = `(?mi)application/component/interrupt$`
cConfiguration = `(?mi)application/component/configuration$`
cLogging = `(?mi)application/component/logg.*`
cLoggerConsole = `(?mi)application/component/logger_console$`
cPidfile = `(?mi)application/component/pidfile$`
cMigration = `(?mi)application/component/migration.*$`
)
return kitTypes.ComponentPreferences{
After: []string{
cEnvironment,
cConfiguration,
cLogging,
cLoggerConsole,
cInterrupt,
cPidfile,
cMigration,
},
}
}
// Initiate Функция инициализации компонента и подготовки компонента к запуску.
func (brp *impl) Initiate() (err error) { return }
// Do Выполнение компонента приложения.
func (brp *impl) Do() (levelDone bool, levelExit bool, err error) {
if brp.debug() {
brp.log().Info(tplApplicationFullStart)
}
return
}
// Finalize Функция вызывается перед завершением компонента и приложения в целом.
func (brp *impl) Finalize() (err error) { return }