// package kern -- библиотека гибкого универсального облегчённого ядра для любого микросервиса. package kern import ( "context" "time" mL0 "gitp78su.ipnodns.ru/svi/kern/v4/lev0" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers" mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1" "gitp78su.ipnodns.ru/svi/kern/v4/lev1/comp_spec" "gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx" "gitp78su.ipnodns.ru/svi/kern/v4/lev2/kmodule" "gitp78su.ipnodns.ru/svi/kern/v4/lev2/kmonolit" "gitp78su.ipnodns.ru/svi/kern/v4/lev2/kserv_http" "gitp78su.ipnodns.ru/svi/kern/v4/lev2/kspec" "gitp78su.ipnodns.ru/svi/kern/v4/lev2/lsi/kstore_kv" "gitp78su.ipnodns.ru/svi/kern/v4/lev2/lsi/store_spec" "gitp78su.ipnodns.ru/svi/kern/v4/lev2/lti/bus_spec" "gitp78su.ipnodns.ru/svi/kern/v4/lev2/lti/kbus_http" "gitp78su.ipnodns.ru/svi/kern/v4/lev2/lti/kbus_http/client_bus_http" "gitp78su.ipnodns.ru/svi/kern/v4/lev2/lti/kbus_local" "gitp78su.ipnodns.ru/svi/kern/v4/lev2/lti/kbus_local/client_bus_local" "gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_ent" "gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_ent/module_name" "gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_kctx" "gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_keeper" "gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_serv_http" "gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_spec" "gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_wui" ) // GetKernelCtx -- возвращает контекст ядра. // func GetKernelCtx() kspec.IKernelCtx { ctx := kctx.GetKernelCtx() return ctx } // NewErr -- возвращает Result с ошибкой. func NewErr[T any](err defs.IErr) mL0.IResult[T] { return mL0.NewErr[T](err) } // NewOk -- возвращает успешный Result с значением. func NewOk[T any](res T) mL0.IResult[T] { return mL0.NewOk(res) } // WrapErr -- оборачивает существующий Result с ошибкой с новой ошибкой. func WrapErr[T any](res mL0.IResult[T], err defs.IErr) mL0.IResult[T] { return mL0.WrapErr(res, err) } // GetKernelStoreKv -- возвращает быстрое key-value хранилище ядра. // func GetKernelStoreKv() store_spec.IKernelStoreKv { store := kstore_kv.GetKernelStore() return store } // GetKernelServerHttp -- возвращает веб-сервер ядра. // func GetKernelServerHttp() kspec.IKernelServerHttp { kernServHttp := kserv_http.GetKernelServHttp() return kernServHttp } type ISafeBool = core_spec.ISafeBool // NewSafeBool -- возвращает новый потокобезопасный булевый признак. // func NewSafeBool(val bool) ISafeBool { sb := mL1.NewSafeBool(val) return sb } // GetKernelBusLocal -- возвращает локальную шину данных. func GetKernelBusLocal() bus_spec.IKernelBus { kCtx := kctx.GetKernelCtx() kCtx.Set(defs.Txt("monolitName"), "unknown monolit", defs.Txt("GetKernelBusLocal()")) lBus := kbus_local.GetKernelBusLocal() return lBus } // GetKernelBusHttp -- возвращает HTTP шину данных. // func GetKernelBusHttp() bus_spec.IKernelBus { bus := kbus_http.GetKernelBusHttp() return bus } // SleepMs -- спит миллисекунду. // func SleepMs() { time.Sleep(time.Millisecond * 1) } // GetMonolitLocal -- возвращает монолит с локальной шиной. func GetMonolitLocal(name mod_ent.AModuleName) mod_spec.IKernelMonolit { kCtx := kctx.GetKernelCtx() kCtx.Set(defs.Txt("isLocal"), true, defs.Txt("bus type")) for { time.Sleep(time.Millisecond * 1) optIsLocal := kCtx.Get(defs.Txt("isLocal")) if optIsLocal.IsSome() { break } } kMonolit := kmonolit.GetMonolit(name) _ = kbus_local.GetKernelBusLocal() return kMonolit } // GetMonolitHttp -- возвращает монолит с локальной шиной поверх HTTP. func GetMonolitHttp(name mod_ent.AModuleName) mod_spec.IKernelMonolit { kCtx := kctx.GetKernelCtx() _ = kbus_http.GetKernelBusHttp() kCtx.Set(defs.Txt("isLocal"), false, defs.Txt("bus type")) for { time.Sleep(time.Millisecond * 1) optIsLocal := kCtx.Get(defs.Txt("isLocal")) if optIsLocal.IsSome() { break } } kMon := kmonolit.GetMonolit(name) return kMon } // NewKernelModule -- возвращает новый модуль на ядре. // func NewKernelModule(name module_name.IModuleNameFix) mod_spec.IKernelModule { resMod := kmodule.NewKernelModule(name) return resMod } // NewClientBusLocal -- возвращает клиент для работы с локальной шиной. // func NewClientBusLocal() bus_spec.IBusClient { lClient := client_bus_local.NewClientBusLocal() return lClient } // NewClientBusHttp -- возвращает клиент для работы с шиной поверх HTTP. // func NewClientBusHttp(url defs.ITxtFix) bus_spec.IBusClient { client := client_bus_http.NewClientBusHttp(url) return client } // GetModuleServHttp -- возвращает модуль для IKernelServHttp. // func GetModuleServHttp() mod_spec.IKernelModule { modServHttp := mod_serv_http.GetModuleServHttp() return modServHttp } // GetModuleKernelCtx -- возвращает модуль для IKernelCtx. // func GetModuleKernelCtx() mod_spec.IKernelModule { kModCtx := mod_kctx.GetModuleKernelCtx() return kModCtx } // GetModuleKernelKeeper -- возвращает модуль для IKernelKeeper. // func GetModuleKernelKeeper() mod_spec.IKernelModule { modKernelKeeper := mod_keeper.GetModuleKeeper() return modKernelKeeper } // GetModuleWui -- возвращает модуль для WUI. // func GetModuleWui() mod_spec.IKernelModule { modWui := mod_wui.GetModuleWui() return modWui } // ILogBuf -- буферизованный лог. type ILogBuf = comp_spec.ILogBuf // LogBufParam -- параметры для создания нового буферизованного лога. type LogBufParam = mL1.LogBufParam // NewLogBuf -- возвращает новый буферизованный лог. // func NewLogBuf(param *LogBufParam) ILogBuf { log := mL1.NewLogBuf(param) return log } // NewSafeBoolReact -- возвращает новую потокобезопасную реактивную булеву переменную. // func NewSafeBoolReact() core_spec.ISafeBoolReact { val := mL1.NewSafeBoolReact() return val } // NewSafeInt -- возвращает новую потокобезопасную целочисленную переменную. // func NewSafeInt(val defs.Int) core_spec.ISafeInt { val_ := mL1.NewSafeInt(val) return val_ } // NewInt -- возвращает новую целочисленную переменную. // func NewInt(val defs.Int) core_spec.Int { val_ := mL1.NewInt(val) return val_ } // NewLocalCtx -- возвращает новый локальный контекст. // func NewLocalCtx(ctx context.Context) comp_spec.ILocalCtx { lCtx := mL1.NewLocalCtx(ctx) return lCtx } // NewSafeString -- возвращает новую потокобезопасную строку. // func NewSafeString() core_spec.ISafeString { str := mL1.NewSafeString() return str } // NewSome -- возвращает новый не пустой результат операции. func NewSome[T any](some T) mL0.IOption[T] { return mL0.NewSome(some) } // NewNone -- возвращает новый пустой результат операции. func NewNone[T any]() mL0.IOption[T] { return mL0.NewNone[T]() } // FnHassert -- проверяет с жёстким падением условие. type FnHassert = mL1.FnHassert // Hassert -- возвращает ссылку на функцию Hassert. // func Hassert() FnHassert { return mL1.FnHassert(helpers.Hassert) } // FnAssert -- проверка на правильность утверждения с падением в панику на локальном стенде (soft assert). type FnAssert = mL1.FnAssert // Assert -- возвращает ссылку на функцию Hassert. // func Assert() FnAssert { return mL1.FnAssert(helpers.Assert) }