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 // StackBackCorrect Дополнительная коррекция просмотра стека вызовов для поиска функции вызвавшей логирование. // Используется когда целевая функция в стеке вызова смещена больше или меньше стандартного значения. StackBackCorrect(stepBack int) 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.