// package kern -- библиотека гибкого универсального облегчённого ядра для любого микросервиса. package kern import ( "context" mL0 "gitp78su.ipnodns.ru/svi/kern/v4/lev0" mKa "gitp78su.ipnodns.ru/svi/kern/v4/lev0/alias" mKt "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes" mL1 "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" "gitp78su.ipnodns.ru/svi/kern/v4/lev2/kbus_local" "gitp78su.ipnodns.ru/svi/kern/v4/lev2/kbus_local/client_bus_local" "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/kstore_kv" "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_wui" ) // GetKernelCtx -- возвращает контекст ядра. func GetKernelCtx() mKt.IKernelCtx { ctx := kctx.GetKernelCtx() return ctx } // NewErr -- возвращает Result с ошибкой. func NewErr[T any](err error) mL0.IResult[T] { return mL0.NewErr[T](err) } // NewRes -- возвращает успешный Result с значением. func NewRes[T any](res T) mL0.IResult[T] { return mL0.NewRes(res) } // WrapErr -- оборачивает существующий Result с ошибкой с новой ошибкой. func WrapErr[T any](res mL0.IResult[T], err error) mL0.IResult[T] { return mL0.WrapErr(res, err) } // GetKernelStoreKv -- возвращает быстрое key-value хранилище ядра. func GetKernelStoreKv() mKt.IKernelStoreKv { store := kstore_kv.GetKernelStore() return store } // GetKernelServerHttp -- возвращает веб-сервер ядра. func GetKernelServerHttp() mKt.IKernelServerHttp { kernServHttp := kserv_http.GetKernelServHttp() return kernServHttp } // NewSafeBool -- возвращает новый потокобезопасный булевый признак. func NewSafeBool() mKt.ISafeBool { sb := mL1.NewSafeBool() return sb } // GetKernelBusLocal -- возвращает локальную шину данных. func GetKernelBusLocal() mKt.IKernelBus { kCtx := kctx.GetKernelCtx() kCtx.Set("monolitName", "unknown monolit", "GetKernelBusLocal()") lBus := kbus_local.GetKernelBusLocal() return lBus } // GetKernelBusHttp -- возвращает HTTP шину данных. func GetKernelBusHttp() mKt.IKernelBus { bus := kbus_http.GetKernelBusHttp() return bus } // SleepMs -- спит миллисекунду. func SleepMs() { mL1.SleepMs() } // GetMonolitLocal -- возвращает монолит с локальной шиной. func GetMonolitLocal(name string) mKt.IKernelMonolit { kCtx := kctx.GetKernelCtx() kCtx.Set("isLocal", true, "bus type") for { SleepMs() optIsLocal := kCtx.Get("isLocal") if optIsLocal.IsSome() { break } } kMonolit := kmonolit.GetMonolit(name) _ = kbus_local.GetKernelBusLocal() return kMonolit } // GetMonolitHttp -- возвращает монолит с локальной шиной поверх HTTP. func GetMonolitHttp(name string) mKt.IKernelMonolit { kCtx := kctx.GetKernelCtx() _ = kbus_http.GetKernelBusHttp() kCtx.Set("isLocal", false, "bus type") for { SleepMs() optIsLocal := kCtx.Get("isLocal") if optIsLocal.IsSome() { break } } kMon := kmonolit.GetMonolit(name) return kMon } // NewKernelModule -- возвращает новый модуль на ядре. func NewKernelModule(name *mKa.AModuleName)mKt.IKernelModule { resMod := kmodule.NewKernelModule(name) return resMod } // NewClientBusLocal -- возвращает клиент для работы с локальной шиной. func NewClientBusLocal() mKt.IBusClient { lClient := client_bus_local.NewClientBusLocal() return lClient } // NewClientBusHttp -- возвращает клиент для работы с шиной поверх HTTP. func NewClientBusHttp(url string) mKt.IBusClient { client := client_bus_http.NewClientBusHttp(url) return client } // GetModuleServHttp -- возвращает модуль для IKernelServHttp. func GetModuleServHttp() mKt.IKernelModule { modServHttp := mod_serv_http.GetModuleServHttp() return modServHttp } // GetModuleKernelCtx -- возвращает модуль для IKernelCtx. func GetModuleKernelCtx() mKt.IKernelModule { kModCtx := mod_kctx.GetModuleKernelCtx() return kModCtx } // GetModuleKernelKeeper -- возвращает модуль для IKernelKeeper. func GetModuleKernelKeeper() mKt.IKernelModule { modKernelKeeper := mod_keeper.GetModuleKeeper() return modKernelKeeper } // GetModuleWui -- возвращает модуль для WUI. func GetModuleWui() mKt.IKernelModule { modWui := mod_wui.GetModuleWui() return modWui } // NewLogBuf -- возвращает новый буферизованный лог. func NewLogBuf(opts ...mL1.OptionLogBuf) mKt.ILogBuf { log := mL1.NewLogBuf(opts...) return log } // NewSafeBoolReact -- возвращает новую потокобезопасную реактивную булеву переменную. func NewSafeBoolReact() mKt.ISafeBoolReact { val := mL1.NewSafeBoolReact() return val } // NewSafeInt -- возвращает новую потокобезопасную целочисленную переменную. func NewSafeInt(val int) mKt.ISafeInt { val_ := mL1.NewSafeInt(val) return val_ } // NewInt -- возвращает новую целочисленную переменную. func NewInt(val int) mKt.Int { val_ := mL1.NewInt(val) return val_ } // NewLocalCtx -- возвращает новый локальный контекст. func NewLocalCtx(ctx context.Context) mKt.ILocalCtx { lCtx := mL1.NewLocalCtx(ctx) return lCtx } // NewSafeString -- возвращает новую потокобезопасную строку. func NewSafeString() mKt.ISafeString { str := mL1.NewSafeString() return str } // MakeOk -- возвращает новый положительный результат операции. func MakeOk[T any](res T) mL0.IResult[T] { return NewRes(res) } // MakeErr -- возвращает новую ошибку результат операции. func MakeErr[T any](err error) mL0.IResult[T] { return NewErr[T](err) } // NewOpt -- возвращает новый не пустой результат операции. func NewOpt[T any](some T) mL0.IOption[T] { return mL0.NewOpt(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.Hassert() } // FnAssert -- проверка на правильность утверждения с падением в панику на локальном стенде (soft assert). type FnAssert = mL1.FnAssert // Assert -- возвращает ссылку на функцию Hassert. func Assert() FnAssert { return mL1.Assert() }