types

package
v4.2.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 13, 2024 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewErrorWithCode

func NewErrorWithCode(code uint8, format string, arg ...any) error

NewErrorWithCode Создание объекта ошибки приложения и возврат интерфейса error

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 Callbacker

type Callbacker func()

Callbacker Интерфейс пустой функции обратного вызова.

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 LoggerKey

type LoggerKey map[string]any

LoggerKey Ключи логирования.

type MainFn

type MainFn func() (code uint8, err error)

MainFn Функция-точка запуска и завершения приложения.

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.

func (*TraceInfo) Copy

func (ti *TraceInfo) Copy(src *TraceInfo)

Copy Копирование данных передаваемого объекта.

func (*TraceInfo) Reset

func (ti *TraceInfo) Reset()

Reset Очистка всех полей объекта TraceInfo.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL