Documentation
¶
Index ¶
- func NewErrorWithCode(code uint8, format string, arg ...any) error
- type BootstrapCommandGroupValueFn
- type BootstrapConfiguration
- type BootstrapConfigurationForkWorker
- type BootstrapDefaultValue
- type BootstrapDefaultValueFn
- type Callbacker
- type CommandGroup
- type Component
- type ComponentCommand
- type ComponentConflictFn
- type ComponentDoFn
- type ComponentFinalizeFn
- type ComponentFlag
- type ComponentInfo
- type ComponentInitiateFn
- type ComponentPreferences
- type ComponentPreferencesFn
- type ComponentRequiresFn
- type ComponentSortFn
- type ConfigurationDefaulter
- type Databuser
- type ErrorWithCode
- type Logger
- type LoggerKey
- type MainFn
- type SyncWriter
- type TraceInfo
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type BootstrapCommandGroupValueFn ¶
type BootstrapCommandGroupValueFn func() []CommandGroup
BootstrapCommandGroupValueFn Функция возвращает список групп команд, отображаемый при выводе помощи.
type BootstrapConfiguration ¶
type BootstrapConfiguration struct {
ApplicationForkWorkerMaster string `` /* 379-byte string literal not displayed */
ApplicationForkWorkerComponent string `` /* 379-byte string literal not displayed */
ApplicationForkWorkerTarget string `` /* 377-byte string literal not displayed */
ApplicationTargetlevel uint16 `` /* 472-byte string literal not displayed */
ApplicationDebug bool `` /* 423-byte string literal not displayed */
ApplicationName string `` /* 379-byte string literal not displayed */
HomeDirectory string `` /* 410-byte string literal not displayed */
WorkingDirectory string `` /* 407-byte string literal not displayed */
TempDirectory string `` /* 411-byte string literal not displayed */
CacheDirectory string `` /* 396-byte string literal not displayed */
ConfigDirectory string `` /* 522-byte string literal not displayed */
ConfigFile string `` /* 411-byte string literal not displayed */
PidFile string `` /* 401-byte string literal not displayed */
StateFile string `` /* 450-byte string literal not displayed */
SocketFile string `` /* 525-byte string literal not displayed */
LogLevel kmll.Level `` /* 514-byte string literal not displayed */
}
BootstrapConfiguration Структура стартовой конфигурации приложения. Параметры тегов "env", "default", "help", описанные в блоке kong, обрабатываются в момент инициализации CLI (первыми), и имеют наивысший приоритет. Параметры тегов "env-name", "default-value", "description" предназначены для конфигурационного файла и обрабатываются после загрузки конфигурационного файла (вторыми). Если значение переменной, после инициализации CLI, равно пустому значению или значению по умолчанию, тогда, после загрузки конфигурационного файла, значение устанавливается согласно приоритету: 1. Значение указанное в конфигурационном файле (наивысший приоритет). 2. Значение указанное в переменной окружения с именем указанным в "env-name". 3. Значения полученные через интерфейс types.ConfigurationDefaulter, если структура реализует этот интерфейс. 4. Значение указанное в "default-value". 5. Значение по умолчанию, для типа golang (пустое значение). Если необходимо, при загрузке конфигурационного файла, загрузить значение из переменной окружения, тогда, переменная в конфигурационном файле, должна отсутствовать, либо должна быть определена пустым значением. Помимо этого, переменная может быть загружена из двух разных переменных окружения, имеющих разный приоритет загрузки, первая описывается в блоке kong, имя "env", обрабатывается на первом этапе, вторая описывается за пределами блока kong, имеет имя тега "env-name" и обрабатывается после загрузки конфигурационного файла.
type BootstrapConfigurationForkWorker ¶
type BootstrapConfigurationForkWorker struct {
// Master Параметры связи подчинённого процесса с управляющим процессом.
Master string
// Component Параметры запуска компоненты на стороне подчинённого процесса.
Component string
// Target Параметры запуска процесса на стороне подчинённого процесса.
Target string
}
BootstrapConfigurationForkWorker Структура параметров для работы в режиме forkWorker.
type BootstrapDefaultValue ¶
type BootstrapDefaultValue struct {
ApplicationTargetlevel BootstrapDefaultValueFn // Целевой уровень выполнения приложения.
ApplicationDebug BootstrapDefaultValueFn // Режим отладки приложения.
ApplicationName BootstrapDefaultValueFn // Название приложения.
ApplicationDescription BootstrapDefaultValueFn // Описание приложения, отображаемое в строке помощи.
HomeDirectory BootstrapDefaultValueFn // Домашняя директория приложения.
WorkingDirectory BootstrapDefaultValueFn // Рабочая директория приложения.
TempDirectory BootstrapDefaultValueFn // Директория для временных файлов.
CacheDirectory BootstrapDefaultValueFn // Директория для файлов кеша.
ConfigDirectory BootstrapDefaultValueFn // Директория для подключаемых или дополнительных конфигураций приложения.
ConfigFile BootstrapDefaultValueFn // Путь и имя файла конфигурации приложения.
PidFile BootstrapDefaultValueFn // Путь и имя PID файла приложения.
StateFile BootstrapDefaultValueFn // Путь и имя файла хранения состояния приложения.
SocketFile BootstrapDefaultValueFn // Сокет файл коммуникаций с приложением.
LogLevel BootstrapDefaultValueFn // Уровень логирования по умолчанию до загрузки конфигурации приложения.
CommandGroup BootstrapCommandGroupValueFn // Список групп команд.
}
BootstrapDefaultValue Описание функций которые вернут значения по умолчанию для конфигурации приложения.
type BootstrapDefaultValueFn ¶
type BootstrapDefaultValueFn func() string
BootstrapDefaultValueFn Функция, возвращающая значение по умолчанию для параметра конфигурации приложения.
type CommandGroup ¶
type CommandGroup struct {
// Key Идентификатор группы команд, ключ связи описания группы с командой, входящей в группу.
Key string
// Title Заголовок группы команд, может быть пустым.
Title string
// Description Описание группы команд. Не может быть пустым, если пустое, тогда описание группы игнорируется.
Description string
}
CommandGroup Описание группы команд отображаемое при выводе помощи к командам.
type Component ¶
type Component interface {
// Preferences Настройки компоненты приложения.
// Опрашивается один раз, при Runlevel=2
Preferences() (ret ComponentPreferences)
// Initiate Запуск инициализации компоненты приложения и подготовки к выполнению основного кода компоненты.
// В этой функции компонента должен проверить всё что ей требуется для работы и выполнить подготовку к работе,
// функция не должна блокировать работу приложения на долгое время, во избежание завершения приложения с ошибкой
// инициализации компоненты приложения.
// Выполнение функции Initiate() ограничено по времени, указывается в InitiateTimeout
// Функция вызывается один раз при Runlevel=8
Initiate() (err error)
// Do Выполнение компоненты приложения
// Функция возвращает:
// - (levelDone) - Флаг остановки автоматического переключения уровней работы приложения.
// - (levelExit) - Флаг переключения уровня работы приложения на уровень завершения работы приложения.
// - (err) - Объект с ошибкой выполнения компоненты приложения. Если хотя бы одна компонента приложения
// вернёт ошибку, приложение начнёт завершение работы с ошибкой выполнения.
// Выполнение функции Do() никак не ограничено по времени.
// Функция вызывается один раз, начиная с Runlevel=10 и заканчивая Runlevel=65534.
Do() (levelDone bool, levelExit bool, err error)
// Finalize Функция вызывается перед завершением компоненты и приложения в целом.
// Каждый компонент, при вызове этой функции должен остановить все запущенные процессы, закрыть файлы,
// сохранить все данные и завершить работу в штатном режиме.
// Выполнение функции никак не ограничено по времени, но не рекомендуется долго блокировать приложение на этой
// стадии, так как скорее всего приложение будет "убито" операционной системой, если не будет отвечать.
// Функция вызывается один раз, Runlevel=65535
Finalize() (err error)
}
Component Интерфейс компоненты приложения
type ComponentCommand ¶
type ComponentCommand struct {
GroupKey string // Ключ группы команд, если пустой, группа не создаётся.
GroupTitle string // Заголовок группы команд, может быть пустым.
GroupDescription string // Описание группы команд. Если пустое, тогда группа не создаётся.
Command string // Название команды. Пустые команды не создаются.
Description string // Описание команды, отображается в помощи пользователю.
IsDefault bool // Команда по умолчанию.
IsHidden bool // Команда скрыта, не отображается в помощи.
Value any // Ссылка на структуру значений с мета информацией, в неё же будут загружены указанное в CLI или ENV, значения.
}
ComponentCommand Описание структуры команды приложения.
type ComponentConflictFn ¶
type ComponentConflictFn func([]*ComponentInfo) ErrorWithCode
ComponentConflictFn Тип функции проверки конфликтов между компонентами.
type ComponentDoFn ¶
type ComponentDoFn func(*ComponentInfo) ErrorWithCode
ComponentDoFn Тип функции вызова функции Do компонента.
type ComponentFinalizeFn ¶
type ComponentFinalizeFn func(*ComponentInfo) ErrorWithCode
ComponentFinalizeFn Тип функции вызова функции Finalize компонента.
type ComponentFlag ¶
type ComponentFlag struct {
ShortKey rune // Короткий, односимвольный синоним флага, может быть пустым.
Flag string // Полное наименование флага, если пустой, флаг игнорируется.
Description string // Помощь для пользователя, описывающая назначение флага.
Environment string // Наименование переменной окружения из которой может быть взято значение флага.
Placeholder string // Значение флага, которое будет указано при отображении в помощи.
IsRequired bool // Обязательный флаг.
IsHidden bool // Флаг скрыт, не отображается в помощи.
Value any // Ссылка на переменную, в которую будет загружено указанное в CLI или ENV, значение.
}
ComponentFlag Описание структуры флагов компоненты приложения.
type ComponentInfo ¶
type ComponentInfo struct {
Before []*regexp.Regexp // Массив приоритета запуска "ДО"
After []*regexp.Regexp // Массив приоритета запуска "ПОСЛЕ"
Require []*regexp.Regexp // Массив строгих зависимостей "ТРЕБУЕТ"
Conflict []*regexp.Regexp // Массив строгих правил "КОНФЛИКТУЕТ"
Command []string // Массив команд
InitiateTimeout time.Duration // Максимальное время ожидания выполнения Initiate()
Runlevel uint16 // Минимальный уровень приложения, при котором выполняется запуск компоненты
Component Component // Интерфейс зарегистрированного компонента
ComponentName string // Название зарегистрированного компонента
IsDisable bool // Флаг активности компоненты, для значения true, компонента отключена
IsInitiate bool // Флаг указывающий была ли выполнена функция Initiate()
IsDo bool // Флаг указывающий была ли выполнена функция Do()
IsFinalize bool // Флаг указывающий была ли выполнена функция Finalize()
}
ComponentInfo Данные зарегистрированного компонента
type ComponentInitiateFn ¶
type ComponentInitiateFn func(*ComponentInfo) ErrorWithCode
ComponentInitiateFn Тип функции вызова функции Initiate компонента с контролем длительности выполнения.
type ComponentPreferences ¶
type ComponentPreferences struct {
// InitiateTimeout Максимальное время ожидания выполнения Initiate() при запуске системы
// Эта опция переопределяет время ожидания по умолчанию, чтобы гарантировать правильный запуск приложения.
// Если указано 0, тогда используется значение таймаута по умолчанию.
// Значение по умолчанию: 1m
InitiateTimeout time.Duration
// Runlevel Минимальный уровень работы приложения, при котором выполняется запуск компоненты, функция Do()
// Значение по умолчанию 0 - не учитывается, компонент стартует на уровне Targetlevel.
// При работе приложения, уровни проходят значения от 0 до 65535, где:
// 0 - начало работы приложения.
// Targetlevel - уровень запуска всех компонентов с Runlevel=0 и ожидание (ожидание зависит от значения Targetlevel)
// 65535 - завершение работы приложения.
// Условия запуска функции Do() каждого компонента следующие:
// Если Runlevel=0, компонента будет вызвана при достижении приложением Runlevel=Targetlevel.
// Если Runlevel<10 или Runlevel>65534, приложение завершится с ошибкой настроек компоненты.
// Если Runlevel>=10 и Runlevel<=Targetlevel, компонента будет вызвана при достижении Targetlevel.
// Если Runlevel>Targetlevel, компонента будет вызвана перед завершением приложения,
// при достижении Runlevel=65535
// Значение по умолчанию: 0
Runlevel uint16
// IsDisable Для значения true, компонента отключена, но зарегистрирована и доступна.
// Заставляет полностью игнорировать компоненту, при этом, регистрация компоненты остаётся, а последним
// вызовом компоненты является функция Preferences().
// Так же, в этом режиме не проверяются зависимости компоненты и не вызывается функция инициализации и завершения.
IsDisable bool
// Before Массив приоритета запуска "ДО"
// Массив состоит из regexp правил поиска по названиям пакетов, перед которыми должна выполняться компонента.
// Сортировка "ДО" может быть перекрыта более приоритетной сортировкой "ПОСЛЕ".
// Если перечисленных компонентов в приложении не зарегистрировано, тогда сортировка запуска не выполняется.
// Если массив пустой, тогда компонента выполняется в порядке регистрации или в соответствии с другими правилами.
Before []string
// After Массив приоритета запуска "ПОСЛЕ"
// Массив состоит из regexp правил поиска по названиям пакетов, после которых должна выполняться компонента.
// Сортировка "ПОСЛЕ" имеет приоритет над сортировкой "ДО".
// Если массив пустой, тогда компонента выполняется в порядке регистрации или в соответствии с другими правилами.
After []string
// Require Массив строгих зависимостей "ТРЕБУЕТ"
// Массив состоит из regexp правил поиска по названиям пакетов, все перечисленные в "ТРЕБУЕТ" компоненты,
// должны быть зарегистрированы в приложении.
// Компонента с зависимостями "ТРЕБУЕТ", запускается в соответствии с правилами Before() и After(), то есть,
// зависимость "ТРЕБУЕТ" проверяет обязательное наличие пакета, но не влияет на порядок запуска компонентов.
// Если в приложении не зарегистрирована хотя бы одна из указанный компонент, приложение завершится с
// ошибкой исключения - "отсутствие зависимости", исключение будет вызвано до начала выполнения функций Initiate().
// Если массив пустой, тогда приложение не проверяет зависимости для компоненты.
Require []string
// Conflict Массив строгих правил "КОНФЛИКТУЕТ"
// Массив состоит из regexp правил поиска по названиям пакетов, ни один из пакетов подпадающих под
// правило "КОНФЛИКТУЕТ" не должен быть зарегистрирован в приложении в качестве компоненты приложения.
// Если в приложении зарегистрирован хотя бы один из перечисленный пакетов, приложение завершится с ошибкой
// исключения - "конфликт зависимости", исключение будет вызвано до начала выполнения функций Initiate().
// Если массив пустой, тогда приложение не проверяет конфликтующие зависимости для компоненты.
Conflict []string
// Command Массив команд, при указании которых, выполняется запуск компоненты
// Массив состоит из чувствительных к регистру строк в кодировке UTF-8.
// Команды указывают условия запуска функции Do() для аргумента командной строки приложения.
// Если список команд пустой, тогда компонента запускается для любой команды.
// Функции инициализации и финализации компоненты запускаются всегда, без учёта команд.
Command []ComponentCommand
// Flag Массив флагов, при указании, в параметры приложения добавляется возможность загрузки данных из флагов
// командной строки. Флаги, описанные в данном объекте, запрашиваются глобально, вне зависимости от
// указания команды. Помимо глобальных флагов, флаги можно указать так же у каждой команды приложения.
Flag []ComponentFlag
}
ComponentPreferences Конфигурация компоненты приложения
type ComponentPreferencesFn ¶
type ComponentPreferencesFn func(*ComponentInfo) (*ComponentInfo, ErrorWithCode)
ComponentPreferencesFn Тип функции загрузки и обработки настроек компонента.
type ComponentRequiresFn ¶
type ComponentRequiresFn func([]*ComponentInfo) ErrorWithCode
ComponentRequiresFn Тип функции проверки зависимостей между компонентами.
type ComponentSortFn ¶
type ComponentSortFn func([]*ComponentInfo) ErrorWithCode
ComponentSortFn Тип функции сортировки компонентов в соответствии с настройками (before) и (after).
type ConfigurationDefaulter ¶
type ConfigurationDefaulter interface {
// Default Функция установки значений по умолчанию для структуры конфигурации.
Default() (err error)
}
ConfigurationDefaulter Интерфейс предназначен для заполнения структуры конфигурации значениями по умолчанию. Структура, реализующая данный интерфейс, заполняется значениями по умолчанию через вызов функции Default(). При этом, значения прописанные в тегах структуры "default-value", игнорироваться.
type Databuser ¶
type Databuser interface {
// Consumer Функция получения данных из шины данных.
// В функцию передаются объекты, типы структур которых были получены через вызов функции KnownType()
// Для синхронного вызова, функция должна вернуть ответа, он будет передан издателю.
// Для асинхронного вызова, функция не должна возвращать никакие данные, ничего не будет передаваться издателю.
Consumer(isSync bool, data any) (ret []any, errs []error)
// KnownType Функция вызывается один раз, при регистрации подписчика в шине данных и должна вернуть срез структур
// данных, которые готова получать. Для получения данных любого типа, необходимо вернуть срез нулевой длинны.
KnownType() (ret []any)
}
Databuser Интерфейс потребителя данных, для подписки на получение данных через шину данных.
type ErrorWithCode ¶
type ErrorWithCode interface {
// Code Возврат кода ошибки
Code() uint8
// Error Реализация интерфейса error
Error() string
}
ErrorWithCode Описание интерфейса ошибки приложения
type Logger ¶
type Logger interface {
// Key Ключи логирования дополняющие лог.
Key(keys ...LoggerKey) Logger
// Time Переопределение времени записи переданным значением.
Time(timestamp time.Time) Logger
// Fatality Изменение режима фатальности по умолчанию для записи лога.
// Допустимые значения:
// * true - после вывода записи в лог, приложение получает сигнал немедленного завершения.
// * false - отменяет завершение приложения, указанное для уровня логирования по умолчанию, например,
// для записи лога Fatal, можно отменить завершение приложения: log.Fatality(false).Fatal(...).
Fatality(fy bool) Logger
// MessageWithLevel Отправка сообщения в лог с указанием уровня логирования.
MessageWithLevel(level kitModuleLogLevel.Level, pattern string, args ...any)
// Fatal Уровень 0: уровень предсмертных сообщений - система не стабильна, продолжение работы невозможно.
Fatal(args ...any)
// Fatalf Уровень 0: уровень предсмертных сообщений - система не стабильна, продолжение работы невозможно.
Fatalf(pattern string, args ...any)
// Alert Уровень 1: уровень сообщений тревоги - система нестабильна, но может частично продолжить работу.
Alert(args ...any)
// Alertf Уровень 1: уровень сообщений тревоги - система нестабильна, но может частично продолжить работу.
Alertf(pattern string, args ...any)
// Critical Уровень 2: уровень критических ошибок - часть функционала системы работает не корректно.
Critical(args ...any)
// Criticalf Уровень 2: уровень критических ошибок - часть функционала системы работает не корректно.
Criticalf(pattern string, args ...any)
// Error Уровень 3: уровень не критических ошибок - ошибки не прерывающие работу приложения.
Error(args ...any)
// Errorf Уровень 3: уровень не критических ошибок - ошибки не прерывающие работу приложения.
Errorf(pattern string, args ...any)
// Warning Уровень 4: уровень сообщений с предупреждениями.
Warning(args ...any)
// Warningf Уровень 4: уровень сообщений с предупреждениями.
Warningf(pattern string, args ...any)
// Notice Уровень 5: уровень штатных информационных сообщений, требующих повышенного внимания.
Notice(args ...any)
// Noticef Уровень 5: уровень штатных информационных сообщений, требующих повышенного внимания.
Noticef(pattern string, args ...any)
// Info Уровень 6: сообщения информационного характера описывающие шаги выполнения алгоритмов приложения.
Info(args ...any)
// Infof Уровень 6: сообщения информационного характера описывающие шаги выполнения алгоритмов приложения.
Infof(pattern string, args ...any)
// Debug Уровень 7: уровень отладочных сообщений.
Debug(args ...any)
// Debugf Уровень 7: уровень отладочных сообщений.
Debugf(pattern string, args ...any)
// Trace Уровень 8: уровень максимально подробной трассировки.
Trace(args ...any)
// Tracef Уровень 8: уровень максимально подробной трассировки.
Tracef(pattern string, args ...any)
}
Logger Интерфейс доступа к методам логирования.
type SyncWriter ¶
type SyncWriter interface {
// Writer Наследование стандартного интерфейса io.Writer.
io.Writer
// Sync Функция принудительного сброса буфера.
Sync() error
}
SyncWriter Интерфейс io.Writer с функцией принудительного сброса буфера.
type TraceInfo ¶
type TraceInfo struct {
Mux *sync.Mutex `json:"-"` // Защита от одновременного доступа.
StackTrace *bytes.Buffer `json:"stack_trace"` // Стек вызовов активного процесса, обрезанный до функции вызова.
FilenameLong *bytes.Buffer `json:"filename_long"` // Путь и имя файла приложения из которого был совершён вызов.
FilenameShort *bytes.Buffer `json:"filename_short"` // Название файла из которого был совершён вызов.
Function *bytes.Buffer `json:"function"` // Название функции совершившей вызов.
Package *bytes.Buffer `json:"package"` // Название пакета файла.
Line int `json:"line"` // Номер строки файла из которого был совершён вызов.
}
TraceInfo Информации о текущем вызове и стеке.
func NewTraceInfo ¶
func NewTraceInfo() (ret *TraceInfo)
NewTraceInfo Создание нового объекта TraceInfo.