|
|
@@ -1,12 +1,12 @@
|
|
|
-// package kern -- библиотека гибкого универсального облегчённого ядра для любого микросервиса
|
|
|
+// package kern -- библиотека гибкого универсального облегчённого ядра для любого микросервиса.
|
|
|
package kern
|
|
|
|
|
|
import (
|
|
|
"context"
|
|
|
"fmt"
|
|
|
|
|
|
- . "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
|
|
|
- . "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
|
|
|
+ mKa "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
|
|
|
+ kt "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
|
|
|
"gitp78su.ipnodns.ru/svi/kern/v4/lev1"
|
|
|
"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kbus_http"
|
|
|
"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kbus_http/client_bus_http"
|
|
|
@@ -23,99 +23,99 @@ import (
|
|
|
"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_wui"
|
|
|
)
|
|
|
|
|
|
-// GetKernelCtx -- возвращает контекст ядра
|
|
|
-func GetKernelCtx() IResult[IKernelCtx] {
|
|
|
+// GetKernelCtx -- возвращает контекст ядра.
|
|
|
+func GetKernelCtx() kt.IResult[kt.IKernelCtx] {
|
|
|
resCtx := kctx.GetKernelCtx()
|
|
|
if resCtx.IsErr() {
|
|
|
err := fmt.Errorf("GetKernelCtx(): err=\n\t%w", resCtx.Err())
|
|
|
- return NewErr[IKernelCtx](err)
|
|
|
+ return NewErr[kt.IKernelCtx](err)
|
|
|
}
|
|
|
- return NewRes(IKernelCtx(resCtx.Val()))
|
|
|
+ return NewRes(kt.IKernelCtx(resCtx.Val()))
|
|
|
}
|
|
|
|
|
|
-// NewErr -- возвращает Result с ошибкой
|
|
|
-func NewErr[T any](err error) IResult[T] {
|
|
|
+// NewErr -- возвращает Result с ошибкой.
|
|
|
+func NewErr[T any](err error) kt.IResult[T] {
|
|
|
return lev1.NewErr[T](err)
|
|
|
}
|
|
|
|
|
|
-// NewRes -- возвращает успешный Result с значением
|
|
|
-func NewRes[T any](res T) IResult[T] {
|
|
|
+// NewRes -- возвращает успешный Result с значением.
|
|
|
+func NewRes[T any](res T) kt.IResult[T] {
|
|
|
return lev1.NewRes(res)
|
|
|
}
|
|
|
|
|
|
-// WrapErr -- оборачивает существующий Result с ошибкой с новой ошибкой
|
|
|
-func WrapErr[T any](res IResult[T], err error) IResult[T] {
|
|
|
+// WrapErr -- оборачивает существующий Result с ошибкой с новой ошибкой.
|
|
|
+func WrapErr[T any](res kt.IResult[T], err error) kt.IResult[T] {
|
|
|
return lev1.WrapErr(res, err)
|
|
|
}
|
|
|
|
|
|
-// GetKernelStoreKv -- возвращает быстрое key-value хранилище ядра
|
|
|
-func GetKernelStoreKv() IResult[IKernelStoreKv] {
|
|
|
+// GetKernelStoreKv -- возвращает быстрое key-value хранилище ядра.
|
|
|
+func GetKernelStoreKv() kt.IResult[kt.IKernelStoreKv] {
|
|
|
resStore := kstore_kv.GetKernelStore()
|
|
|
if resStore.IsErr() {
|
|
|
err := fmt.Errorf("GetKernelStoreKv(): err=\n\t%w", resStore.Err())
|
|
|
- return NewErr[IKernelStoreKv](err)
|
|
|
+ return NewErr[kt.IKernelStoreKv](err)
|
|
|
}
|
|
|
- store := IKernelStoreKv(resStore.Val())
|
|
|
+ store := kt.IKernelStoreKv(resStore.Val())
|
|
|
return NewRes(store)
|
|
|
}
|
|
|
|
|
|
-// GetKernelServerHttp -- возвращает веб-сервер ядра
|
|
|
-func GetKernelServerHttp() IResult[IKernelServerHttp] {
|
|
|
+// GetKernelServerHttp -- возвращает веб-сервер ядра.
|
|
|
+func GetKernelServerHttp() kt.IResult[kt.IKernelServerHttp] {
|
|
|
kernServHttp := kserv_http.GetKernelServHttp()
|
|
|
return kernServHttp
|
|
|
}
|
|
|
|
|
|
-// NewSafeBool -- возвращает новый потокобезопасный булевый признак
|
|
|
-func NewSafeBool() ISafeBool {
|
|
|
+// NewSafeBool -- возвращает новый потокобезопасный булевый признак.
|
|
|
+func NewSafeBool() kt.ISafeBool {
|
|
|
sb := lev1.NewSafeBool()
|
|
|
return sb
|
|
|
}
|
|
|
|
|
|
-// GetKernelBusLocal -- возвращает локальную шину данных
|
|
|
-func GetKernelBusLocal() IResult[IKernelBus] {
|
|
|
+// GetKernelBusLocal -- возвращает локальную шину данных.
|
|
|
+func GetKernelBusLocal() kt.IResult[kt.IKernelBus] {
|
|
|
resCtx := kctx.GetKernelCtx()
|
|
|
if resCtx.IsErr() {
|
|
|
err := fmt.Errorf("GetKernelBusLocal(): err=\n\t%w", resCtx.Err())
|
|
|
- return NewErr[IKernelBus](err)
|
|
|
+ return NewErr[kt.IKernelBus](err)
|
|
|
}
|
|
|
kCtx := resCtx.Val()
|
|
|
resSet := kCtx.Set("monolitName", "unknown monolit", "GetKernelBusLocal()")
|
|
|
if resSet.IsErr() {
|
|
|
err := fmt.Errorf("GetKernelBusLocal(): err=\n\t%w", resSet.Err())
|
|
|
- return NewErr[IKernelBus](err)
|
|
|
+ return NewErr[kt.IKernelBus](err)
|
|
|
}
|
|
|
resBus := kbus_local.GetKernelBusLocal()
|
|
|
if resBus.IsErr() {
|
|
|
err := fmt.Errorf("GetKernelBusLocal(): err=\n\t%w", resBus.Err())
|
|
|
- return NewErr[IKernelBus](err)
|
|
|
+ return NewErr[kt.IKernelBus](err)
|
|
|
}
|
|
|
- bus := IKernelBus(resBus.Val())
|
|
|
+ bus := kt.IKernelBus(resBus.Val())
|
|
|
return NewRes(bus)
|
|
|
}
|
|
|
|
|
|
-// GetKernelBusHttp -- возвращает HTTP шину данных
|
|
|
-func GetKernelBusHttp() IResult[IKernelBus] {
|
|
|
+// GetKernelBusHttp -- возвращает HTTP шину данных.
|
|
|
+func GetKernelBusHttp() kt.IResult[kt.IKernelBus] {
|
|
|
bus := kbus_http.GetKernelBusHttp()
|
|
|
return bus
|
|
|
}
|
|
|
|
|
|
-// SleepMs -- спит миллисекунду
|
|
|
+// SleepMs -- спит миллисекунду.
|
|
|
func SleepMs() {
|
|
|
lev1.SleepMs()
|
|
|
}
|
|
|
|
|
|
-// GetMonolitLocal -- возвращает монолит с локальной шиной
|
|
|
-func GetMonolitLocal(name string) IResult[IKernelMonolit] {
|
|
|
+// GetMonolitLocal -- возвращает монолит с локальной шиной.
|
|
|
+func GetMonolitLocal(name string) kt.IResult[kt.IKernelMonolit] {
|
|
|
resCtx := kctx.GetKernelCtx()
|
|
|
if resCtx.IsErr() {
|
|
|
err := fmt.Errorf("GetMonolitLocal(): err=\n\t%w", resCtx.Err())
|
|
|
- return NewErr[IKernelMonolit](err)
|
|
|
+ return NewErr[kt.IKernelMonolit](err)
|
|
|
}
|
|
|
kCtx := resCtx.Val()
|
|
|
resSet := kCtx.Set("isLocal", true, "bus type")
|
|
|
if resSet.IsErr() {
|
|
|
err := fmt.Errorf("GetMonolitLocal(): err=\n\t%w", resSet.Err())
|
|
|
- return NewErr[IKernelMonolit](err)
|
|
|
+ return NewErr[kt.IKernelMonolit](err)
|
|
|
}
|
|
|
for {
|
|
|
SleepMs()
|
|
|
@@ -127,25 +127,25 @@ func GetMonolitLocal(name string) IResult[IKernelMonolit] {
|
|
|
res := kmonolit.GetMonolit(name)
|
|
|
if res.IsErr() {
|
|
|
err := fmt.Errorf("GetMonolitLocal(): err=\n\t%w", res.Err())
|
|
|
- return NewErr[IKernelMonolit](err)
|
|
|
+ return NewErr[kt.IKernelMonolit](err)
|
|
|
}
|
|
|
_ = kbus_local.GetKernelBusLocal()
|
|
|
- return NewRes(IKernelMonolit(res.Val()))
|
|
|
+ return NewRes(kt.IKernelMonolit(res.Val()))
|
|
|
}
|
|
|
|
|
|
-// GetMonolitHttp -- возвращает монолит с локальной шиной поверх HTTP
|
|
|
-func GetMonolitHttp(name string) IResult[IKernelMonolit] {
|
|
|
+// GetMonolitHttp -- возвращает монолит с локальной шиной поверх HTTP.
|
|
|
+func GetMonolitHttp(name string) kt.IResult[kt.IKernelMonolit] {
|
|
|
resCtx := kctx.GetKernelCtx()
|
|
|
if resCtx.IsErr() {
|
|
|
err := fmt.Errorf("GetMonolitHttp(): err=\n\t%w", resCtx.Err())
|
|
|
- return NewErr[IKernelMonolit](err)
|
|
|
+ return NewErr[kt.IKernelMonolit](err)
|
|
|
}
|
|
|
kCtx := resCtx.Val()
|
|
|
_ = kbus_http.GetKernelBusHttp()
|
|
|
resSet := kCtx.Set("isLocal", false, "bus type")
|
|
|
if resSet.IsErr() {
|
|
|
err := fmt.Errorf("GetMonolitHttp(): err=\n\t%w", resSet.Err())
|
|
|
- return NewErr[IKernelMonolit](err)
|
|
|
+ return NewErr[kt.IKernelMonolit](err)
|
|
|
}
|
|
|
for {
|
|
|
SleepMs()
|
|
|
@@ -157,151 +157,151 @@ func GetMonolitHttp(name string) IResult[IKernelMonolit] {
|
|
|
res := kmonolit.GetMonolit(name)
|
|
|
if res.IsErr() {
|
|
|
err := fmt.Errorf("GetMonolitHttp(): err=\n\t%w", res.Err())
|
|
|
- return NewErr[IKernelMonolit](err)
|
|
|
+ return NewErr[kt.IKernelMonolit](err)
|
|
|
}
|
|
|
- return NewRes(IKernelMonolit(res.Val()))
|
|
|
+ return NewRes(kt.IKernelMonolit(res.Val()))
|
|
|
}
|
|
|
|
|
|
-// NewKernelModule -- возвращает новый модуль на ядре
|
|
|
-func NewKernelModule(name AModuleName) IResult[IKernelModule] {
|
|
|
+// NewKernelModule -- возвращает новый модуль на ядре.
|
|
|
+func NewKernelModule(name mKa.AModuleName) kt.IResult[kt.IKernelModule] {
|
|
|
resMod := kmodule.NewKernelModule(name)
|
|
|
return resMod
|
|
|
}
|
|
|
|
|
|
-// NewClientBusLocal -- возвращает клиент для работы с локальной шиной
|
|
|
-func NewClientBusLocal() IResult[IBusClient] {
|
|
|
+// NewClientBusLocal -- возвращает клиент для работы с локальной шиной.
|
|
|
+func NewClientBusLocal() kt.IResult[kt.IBusClient] {
|
|
|
res := client_bus_local.NewClientBusLocal()
|
|
|
if res.IsErr() {
|
|
|
err := fmt.Errorf("NewClientBusLocal(): err=\n\t%w", res.Err())
|
|
|
- return NewErr[IBusClient](err)
|
|
|
+ return NewErr[kt.IBusClient](err)
|
|
|
}
|
|
|
client := res.Val()
|
|
|
return NewRes(client)
|
|
|
}
|
|
|
|
|
|
-// NewClientBusHttp -- возвращает клиент для работы с шиной поверх HTTP
|
|
|
-func NewClientBusHttp(url string) IResult[IBusClient] {
|
|
|
+// NewClientBusHttp -- возвращает клиент для работы с шиной поверх HTTP.
|
|
|
+func NewClientBusHttp(url string) kt.IResult[kt.IBusClient] {
|
|
|
client := client_bus_http.NewClientBusHttp(url)
|
|
|
return client
|
|
|
}
|
|
|
|
|
|
-// GetModuleServHttp -- возвращает модуль для IKernelServHttp
|
|
|
-func GetModuleServHttp() IResult[IKernelModule] {
|
|
|
+// GetModuleServHttp -- возвращает модуль для IKernelServHttp.
|
|
|
+func GetModuleServHttp() kt.IResult[kt.IKernelModule] {
|
|
|
resHttp := mod_serv_http.GetModuleServHttp()
|
|
|
if resHttp.IsErr() {
|
|
|
err := fmt.Errorf("GetModuleServHttp(): err=\n\t%w", resHttp.Err())
|
|
|
- return NewErr[IKernelModule](err)
|
|
|
+ return NewErr[kt.IKernelModule](err)
|
|
|
}
|
|
|
modServHttp := resHttp.Val()
|
|
|
- return NewRes(IKernelModule(modServHttp))
|
|
|
+ return NewRes(kt.IKernelModule(modServHttp))
|
|
|
}
|
|
|
|
|
|
-// GetModuleKernelCtx -- возвращает модуль для IKernelCtx
|
|
|
-func GetModuleKernelCtx() IResult[IKernelModule] {
|
|
|
+// GetModuleKernelCtx -- возвращает модуль для IKernelCtx.
|
|
|
+func GetModuleKernelCtx() kt.IResult[kt.IKernelModule] {
|
|
|
resMod := mod_kctx.GetModuleKernelCtx()
|
|
|
if resMod.IsErr() {
|
|
|
err := fmt.Errorf("GetModuleKernelCtx(): err=\n\t%w", resMod.Err())
|
|
|
- return NewErr[IKernelModule](err)
|
|
|
+ return NewErr[kt.IKernelModule](err)
|
|
|
}
|
|
|
mod := resMod.Val()
|
|
|
- return NewRes(IKernelModule(mod))
|
|
|
+ return NewRes(kt.IKernelModule(mod))
|
|
|
}
|
|
|
|
|
|
-// GetModuleKernelKeeper -- возвращает модуль для IKernelKeeper
|
|
|
-func GetModuleKernelKeeper() IResult[IKernelModule] {
|
|
|
+// GetModuleKernelKeeper -- возвращает модуль для IKernelKeeper.
|
|
|
+func GetModuleKernelKeeper() kt.IResult[kt.IKernelModule] {
|
|
|
resKeeper := mod_keeper.GetModuleKeeper()
|
|
|
if resKeeper.IsErr() {
|
|
|
err := fmt.Errorf("GetModuleKernelKeeper(): err=\n\t%w", resKeeper.Err())
|
|
|
- return NewErr[IKernelModule](err)
|
|
|
+ return NewErr[kt.IKernelModule](err)
|
|
|
}
|
|
|
modKernelKeeper := resKeeper.Val()
|
|
|
- return NewRes(IKernelModule(modKernelKeeper))
|
|
|
+ return NewRes(kt.IKernelModule(modKernelKeeper))
|
|
|
}
|
|
|
|
|
|
-// GetModuleWui -- возвращает модуль для WUI
|
|
|
-func GetModuleWui() IResult[IKernelModule] {
|
|
|
+// GetModuleWui -- возвращает модуль для WUI.
|
|
|
+func GetModuleWui() kt.IResult[kt.IKernelModule] {
|
|
|
resMod := mod_wui.GetModuleWui()
|
|
|
if resMod.IsErr() {
|
|
|
err := fmt.Errorf("GetModuleWui(): err=\n\t%w", resMod.Err())
|
|
|
- return NewErr[IKernelModule](err)
|
|
|
+ return NewErr[kt.IKernelModule](err)
|
|
|
}
|
|
|
modWui := resMod.Val()
|
|
|
- return NewRes(IKernelModule(modWui))
|
|
|
+ return NewRes(kt.IKernelModule(modWui))
|
|
|
}
|
|
|
|
|
|
-// NewLogBuf -- возвращает новый буферизованный лог
|
|
|
-func NewLogBuf(opts ...lev1.OptionLogBuf) ILogBuf {
|
|
|
+// NewLogBuf -- возвращает новый буферизованный лог.
|
|
|
+func NewLogBuf(opts ...lev1.OptionLogBuf) kt.ILogBuf {
|
|
|
log := lev1.NewLogBuf(opts...)
|
|
|
return log
|
|
|
}
|
|
|
|
|
|
-// NewSafeBoolReact -- возвращает новую потокобезопасную реактивную булеву переменную
|
|
|
-func NewSafeBoolReact() ISafeBoolReact {
|
|
|
+// NewSafeBoolReact -- возвращает новую потокобезопасную реактивную булеву переменную.
|
|
|
+func NewSafeBoolReact() kt.ISafeBoolReact {
|
|
|
val := lev1.NewSafeBoolReact()
|
|
|
return val
|
|
|
}
|
|
|
|
|
|
-// NewSafeInt -- возвращает новую потокобезопасную целочисленную переменную
|
|
|
-func NewSafeInt(val int) ISafeInt {
|
|
|
+// NewSafeInt -- возвращает новую потокобезопасную целочисленную переменную.
|
|
|
+func NewSafeInt(val int) kt.ISafeInt {
|
|
|
val_ := lev1.NewSafeInt(val)
|
|
|
return val_
|
|
|
}
|
|
|
|
|
|
-// NewInt -- возвращает новую целочисленную переменную
|
|
|
-func NewInt(val int) Int {
|
|
|
+// NewInt -- возвращает новую целочисленную переменную.
|
|
|
+func NewInt(val int) kt.Int {
|
|
|
val_ := lev1.NewInt(val)
|
|
|
return val_
|
|
|
}
|
|
|
|
|
|
-// NewLocalCtx -- возвращает новый локальный контекст
|
|
|
-func NewLocalCtx(ctx context.Context) IResult[ILocalCtx] {
|
|
|
+// NewLocalCtx -- возвращает новый локальный контекст.
|
|
|
+func NewLocalCtx(ctx context.Context) kt.IResult[kt.ILocalCtx] {
|
|
|
resCtx := lev1.NewLocalCtx(ctx)
|
|
|
if resCtx.IsErr() {
|
|
|
err := fmt.Errorf("NewLocalCtx(): err=\n\t%w", resCtx.Err())
|
|
|
- return NewErr[ILocalCtx](err)
|
|
|
+ return NewErr[kt.ILocalCtx](err)
|
|
|
}
|
|
|
ctx_ := resCtx.Val()
|
|
|
return NewRes(ctx_)
|
|
|
}
|
|
|
|
|
|
-// NewSafeString -- возвращает новую потокобезопасную строку
|
|
|
-func NewSafeString() ISafeString {
|
|
|
+// NewSafeString -- возвращает новую потокобезопасную строку.
|
|
|
+func NewSafeString() kt.ISafeString {
|
|
|
str := lev1.NewSafeString()
|
|
|
return str
|
|
|
}
|
|
|
|
|
|
-// MakeOk -- возвращает новый положительный результат операции
|
|
|
-func MakeOk[T any](res T) IResult[T] {
|
|
|
+// MakeOk -- возвращает новый положительный результат операции.
|
|
|
+func MakeOk[T any](res T) kt.IResult[T] {
|
|
|
return NewRes(res)
|
|
|
}
|
|
|
|
|
|
-// MakeErr -- возвращает новую ошибку результат операции
|
|
|
-func MakeErr[T any](err error) IResult[T] {
|
|
|
+// MakeErr -- возвращает новую ошибку результат операции.
|
|
|
+func MakeErr[T any](err error) kt.IResult[T] {
|
|
|
return NewErr[T](err)
|
|
|
}
|
|
|
|
|
|
-// NewOpt -- возвращает новый не пустой результат операции
|
|
|
-func NewOpt[T any](some T) IOption[T] {
|
|
|
+// NewOpt -- возвращает новый не пустой результат операции.
|
|
|
+func NewOpt[T any](some T) kt.IOption[T] {
|
|
|
return lev1.NewOpt(some)
|
|
|
}
|
|
|
|
|
|
-// NewNone -- возвращает новый пустой результат операции
|
|
|
-func NewNone[T any]() IOption[T] {
|
|
|
+// NewNone -- возвращает новый пустой результат операции.
|
|
|
+func NewNone[T any]() kt.IOption[T] {
|
|
|
return lev1.NewNone[T]()
|
|
|
}
|
|
|
|
|
|
-// FnHassert -- проверяет с жёстким падением условие
|
|
|
+// FnHassert -- проверяет с жёстким падением условие.
|
|
|
type FnHassert = lev1.FnHassert
|
|
|
|
|
|
-// Hassert -- возвращает ссылку на функцию Hassert
|
|
|
+// Hassert -- возвращает ссылку на функцию Hassert.
|
|
|
func Hassert() FnHassert {
|
|
|
return lev1.Hassert()
|
|
|
}
|
|
|
|
|
|
-// FnAssert -- проверка на правильность утверждения с падением в панику на локальном стенде (soft assert)
|
|
|
+// FnAssert -- проверка на правильность утверждения с падением в панику на локальном стенде (soft assert).
|
|
|
type FnAssert = lev1.FnAssert
|
|
|
|
|
|
-// Assert -- возвращает ссылку на функцию Hassert
|
|
|
+// Assert -- возвращает ссылку на функцию Hassert.
|
|
|
func Assert() FnAssert {
|
|
|
return lev1.Assert()
|
|
|
}
|