Procházet zdrojové kódy

SVI Линтеры

SVI před 2 měsíci
rodič
revize
449661bfe8
33 změnil soubory, kde provedl 455 přidání a 469 odebrání
  1. 1 1
      v4/Taskfile.yml
  2. 5 5
      v4/lev1/safe_string/safe_string.go
  3. 15 15
      v4/lev2/kbus/dict_sub_hook/dict_sub_hook.go
  4. 20 20
      v4/lev2/kbus/dict_topic_serve/dict_topic_serve.go
  5. 18 18
      v4/lev2/kbus/dict_topic_sub/dict_topic_sub.go
  6. 37 37
      v4/lev2/kbus_base/kbus_base.go
  7. 48 48
      v4/lev2/kbus_http/client_bus_http/client_bus_http.go
  8. 12 12
      v4/lev2/kbus_http/kbus_http.go
  9. 6 6
      v4/lev2/kbus_local/client_bus_local/client_bus_local.go
  10. 6 6
      v4/lev2/kbus_local/kbus_local.go
  11. 16 16
      v4/lev2/kctx/kctx.go
  12. 13 13
      v4/lev2/kernel_keeper/kernel_keeper.go
  13. 31 34
      v4/lev2/kmodule/kmodule.go
  14. 9 9
      v4/lev2/kmodule/mod_stat/mod_stat.go
  15. 31 33
      v4/lev2/kmonolit/kmonolit.go
  16. 20 23
      v4/lev2/kserv_http/kserv_http.go
  17. 10 10
      v4/lev2/kserv_http_std/kserv_http_std.go
  18. 35 38
      v4/lev2/kstore_kv/kstore_kv.go
  19. 11 12
      v4/lev2/kstore_kv_std/kv_bucket_base/dict_rec/dict_rec.go
  20. 23 25
      v4/lev2/kwg/kwg.go
  21. 11 11
      v4/lev2/log_topic/log_topic.go
  22. 18 18
      v4/lev2/mock_hand_serve/mock_hand_serve.go
  23. 15 15
      v4/lev2/mock_hand_sub_http/mock_hand_sub_http.go
  24. 13 13
      v4/lev2/mock_hand_sub_local/mock_hand_sub.go
  25. 2 2
      v4/lev2/wui/hx_swap/hx_swap.go
  26. 2 2
      v4/lev2/wui/hx_swap_oob/hx_swap_oob.go
  27. 2 2
      v4/lev2/wui/hx_target/hx_target.go
  28. 2 2
      v4/lev2/wui/hx_trigger/hx_trigger.go
  29. 6 6
      v4/lev2/wui/hx_url/hx_url.go
  30. 2 2
      v4/lev2/wui/hx_url_method/hx_url_method.go
  31. 4 4
      v4/lev2/wui/hx_url_patch/hx_url_patch.go
  32. 4 4
      v4/lev2/wui/hx_vals/hx_vals.go
  33. 7 7
      v4/lev2/wui/wui_button/wui_button.go

+ 1 - 1
v4/Taskfile.yml

@@ -47,7 +47,7 @@ tasks:
       # - go install github.com/MakeNowJust/enumcase/cmd/enumcase@latest
       # - enumcase ./...
       # - go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
-      - go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2
+      # - go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2
       - golangci-lint run ./...
       # - go install github.com/fzipp/gocyclo/cmd/gocyclo@latest
       # - gocyclo -over 11 .

+ 5 - 5
v4/lev1/safe_string/safe_string.go

@@ -7,7 +7,7 @@ import (
 	"sync"
 
 	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/result"
+	mRes "gitp78su.ipnodns.ru/svi/kern/v4/lev1/result"
 )
 
 // safeString -- потокобезопасная строка.
@@ -28,9 +28,9 @@ func NewSafeStringGetenv(env string) IResult[ISafeString] {
 	res := sf.Getenv(env)
 	if res.IsErr() {
 		err := fmt.Errorf("NewSafeStringGetenv(): in get from env(%v), err=\n\t%w", env, res.Err())
-		return NewErr[ISafeString](err)
+		return mRes.NewErr[ISafeString](err)
 	}
-	return NewRes(sf)
+	return mRes.NewRes(sf)
 }
 
 // Byte -- возвращает байтовое представление строки.
@@ -66,8 +66,8 @@ func (sf *safeString) Getenv(env string) IResult[string] {
 	strVal := os.Getenv(env)
 	if strVal == "" {
 		err := fmt.Errorf("safeString.Getenv(): from env(%v), val is empty", env)
-		return NewErr[string](err)
+		return mRes.NewErr[string](err)
 	}
 	sf.val = strVal
-	return NewRes(strVal)
+	return mRes.NewRes(strVal)
 }

+ 15 - 15
v4/lev2/kbus/dict_sub_hook/dict_sub_hook.go

@@ -5,35 +5,35 @@ import (
 	"fmt"
 	"sync"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
+	mKa "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
+	mKt "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
+	mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx"
 )
 
 // dictSubHook -- словарь потребителей топика по подписке.
 type dictSubHook struct {
-	ctx   IKernelCtx
-	dict  map[AHandlerName]bool // В качестве ключа -- URL веб-хука
+	ctx   mKt.IKernelCtx
+	dict  map[mKa.AHandlerName]bool // В качестве ключа -- URL веб-хука
 	block sync.RWMutex
 }
 
 // NewDictSubHook -- возвращает новый словарь веб-хуков одного топика.
-func NewDictSubHook() IResult[IDictSubHook] {
+func NewDictSubHook() mKt.IResult[mKt.IDictSubHook] {
 	resKernCtx := kctx.GetKernelCtx()
 	if resKernCtx.IsErr() {
 		err := fmt.Errorf("dictSubHook.NewDictSubHook(): in get kernel ctx, err=\n\t%w", resKernCtx.Err())
-		return NewErr[IDictSubHook](err)
+		return mL1.NewErr[mKt.IDictSubHook](err)
 	}
 	sf := &dictSubHook{
 		ctx:  resKernCtx.Val(),
-		dict: map[AHandlerName]bool{},
+		dict: map[mKa.AHandlerName]bool{},
 	}
-	return NewRes(IDictSubHook(sf))
+	return mL1.NewRes(mKt.IDictSubHook(sf))
 }
 
 // Unsubscribe -- удаляет из словаря подписки обработчик.
-func (sf *dictSubHook) Unsubscribe(handler IBusHandlerSubscribe) {
+func (sf *dictSubHook) Unsubscribe(handler mKt.IBusHandlerSubscribe) {
 	sf.block.Lock()
 	defer sf.block.Unlock()
 	if handler == nil {
@@ -46,21 +46,21 @@ func (sf *dictSubHook) Unsubscribe(handler IBusHandlerSubscribe) {
 }
 
 // Subscribe -- добавляет в словарь подписки новый обработчик.
-func (sf *dictSubHook) Subscribe(handler IBusHandlerSubscribe) IResult[bool] {
+func (sf *dictSubHook) Subscribe(handler mKt.IBusHandlerSubscribe) mKt.IResult[bool] {
 	sf.block.Lock()
 	defer sf.block.Unlock()
 	if handler == nil {
 		err := fmt.Errorf("dictSubHook.Subscribe(): handler==nil")
-		return NewErr[bool](err)
+		return mL1.NewErr[bool](err)
 	}
 	handlerName := handler.Name()
 	sf.dict[handlerName] = true
 	res := sf.ctx.Set(string(handlerName), handler, "subscribe handler")
 	if res.IsErr() {
 		err := fmt.Errorf("dictSubHook.Subscribe(): in set subscribe handler in kernel ctx, err=\n\t%w", res.Err())
-		return NewErr[bool](err)
+		return mL1.NewErr[bool](err)
 	}
-	return NewRes(true)
+	return mL1.NewRes(true)
 }
 
 // Read -- вызывает все обработчики словаря подписок.
@@ -73,7 +73,7 @@ func (sf *dictSubHook) Read(binMsg []byte) {
 			sf.ctx.Del(string(handlerName))
 			continue
 		}
-		handler := optHand.Val().Val().(IBusHandlerSubscribe)
+		handler := optHand.Val().Val().(mKt.IBusHandlerSubscribe)
 		go handler.FnBack(binMsg)
 	}
 }

+ 20 - 20
v4/lev2/kbus/dict_topic_serve/dict_topic_serve.go

@@ -7,9 +7,9 @@ import (
 	"sync"
 	"time"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
+	mKa "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
+	mKt "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
+	mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx"
 )
 
@@ -18,44 +18,44 @@ import (
 // Допускается только один обработчик запросов на один топик.
 type dictServe struct {
 	sync.RWMutex
-	kCtx      IKernelCtx
-	dictServe map[ATopic]IBusHandlerServe
+	kCtx      mKt.IKernelCtx
+	dictServe map[mKa.ATopic]mKt.IBusHandlerServe
 }
 
 // NewDictServe -- возвращает потокобезопасный словарь обработчиков запросов.
-func NewDictServe() IResult[*dictServe] {
+func NewDictServe() mKt.IResult[*dictServe] {
 	resKernCtx := kctx.GetKernelCtx()
 	if resKernCtx.IsErr() {
 		err := fmt.Errorf("NewDictServe(): in get kernel ctx, err=\n\t%w", resKernCtx.Err())
-		return NewErr[*dictServe](err)
+		return mL1.NewErr[*dictServe](err)
 	}
 	sf := &dictServe{
 		kCtx:      resKernCtx.Val(),
-		dictServe: map[ATopic]IBusHandlerServe{},
+		dictServe: map[mKa.ATopic]mKt.IBusHandlerServe{},
 	}
-	return NewRes(sf)
+	return mL1.NewRes(sf)
 }
 
 // Register -- регистрирует обработчик запросов.
-func (sf *dictServe) Register(handler IBusHandlerServe) IResult[bool] {
+func (sf *dictServe) Register(handler mKt.IBusHandlerServe) mKt.IResult[bool] {
 	sf.Lock()
 	defer sf.Unlock()
 	if handler == nil {
-		return NewErr[bool](fmt.Errorf("dictServe.Register(): IBusHandlerSubscribe==nil"))
+		return mL1.NewErr[bool](fmt.Errorf("dictServe.Register(): IBusHandlerSubscribe==nil"))
 	}
 	topic := handler.Topic()
 	if topic == "" {
-		return NewErr[bool](fmt.Errorf("dictServe.Register(): empty topic of handler"))
+		return mL1.NewErr[bool](fmt.Errorf("dictServe.Register(): empty topic of handler"))
 	}
 	isTwinRegister := sf.register(handler)
 	if isTwinRegister {
-		return NewErr[bool](fmt.Errorf("dictServe.Register(): handler of topic (%v) already register", topic))
+		return mL1.NewErr[bool](fmt.Errorf("dictServe.Register(): handler of topic (%v) already register", topic))
 	}
-	return NewRes(true)
+	return mL1.NewRes(true)
 }
 
 // Unregister -- удаляет обработчик запросов из словаря.
-func (sf *dictServe) Unregister(handler IBusHandlerServe) {
+func (sf *dictServe) Unregister(handler mKt.IBusHandlerServe) {
 	sf.Lock()
 	defer sf.Unlock()
 	if handler == nil {
@@ -66,16 +66,16 @@ func (sf *dictServe) Unregister(handler IBusHandlerServe) {
 }
 
 // SendRequest -- вызывает обработчик при поступлении запроса.
-func (sf *dictServe) SendRequest(topic ATopic, binReq []byte) IResult[[]byte] {
+func (sf *dictServe) SendRequest(topic mKa.ATopic, binReq []byte) mKt.IResult[[]byte] {
 	sf.RLock()
 	defer sf.RUnlock()
 	handler, isOk := sf.dictServe[topic]
 	if !isOk {
 		err := fmt.Errorf("dictServe.SendRequest(): handler for topic (%v) not exists", topic)
-		return NewErr[[]byte](err)
+		return mL1.NewErr[[]byte](err)
 	}
 	var (
-		chRes = make(chan IResult[[]byte], 2)
+		chRes = make(chan mKt.IResult[[]byte], 2)
 	)
 	ctx, fnCancel := context.WithTimeout(sf.kCtx.Ctx(), time.Millisecond*time.Duration(TimeoutDefault))
 	defer fnCancel()
@@ -88,7 +88,7 @@ func (sf *dictServe) SendRequest(topic ATopic, binReq []byte) IResult[[]byte] {
 	select {
 	case <-ctx.Done():
 		err := fmt.Errorf("dictServe.SendRequest(): in call for topic (%v), err=\n\t%w", topic, ctx.Err())
-		return NewErr[[]byte](err)
+		return mL1.NewErr[[]byte](err)
 	case res := <-chRes:
 		return res
 	}
@@ -97,7 +97,7 @@ func (sf *dictServe) SendRequest(topic ATopic, binReq []byte) IResult[[]byte] {
 var TimeoutDefault = 15000
 
 // регистрирует обработчик запросов.
-func (sf *dictServe) register(handler IBusHandlerServe) bool {
+func (sf *dictServe) register(handler mKt.IBusHandlerServe) bool {
 	topic := handler.Topic()
 	_, isOk := sf.dictServe[topic]
 	if isOk {

+ 18 - 18
v4/lev2/kbus/dict_topic_sub/dict_topic_sub.go

@@ -5,42 +5,42 @@ import (
 	"fmt"
 	"sync"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
+	mKa "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
+	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/dict_sub_hook"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx"
 )
 
 type tReadReq struct {
-	topic  ATopic
+	topic  mKa.ATopic
 	binMsg []byte
 }
 
 // dictTopicSub -- потокобезопасный словарь подписчиков.
 type dictTopicSub struct {
 	sync.RWMutex
-	kCtx          IKernelCtx
-	dictTopicHook map[ATopic]IDictSubHook
+	kCtx          mKt.IKernelCtx
+	dictTopicHook map[mKa.ATopic]mKt.IDictSubHook
 }
 
 // NewDictTopicSub -- возвращает потокобезопасный словарь подписчиков.
-func NewDictTopicSub() IResult[*dictTopicSub] {
+func NewDictTopicSub() mKt.IResult[*dictTopicSub] {
 	resCtx := kctx.GetKernelCtx()
 	if resCtx.IsErr() {
 		err := fmt.Errorf("NewDictTopicSub(): kCtx==nil")
-		return NewErr[*dictTopicSub](err)
+		return mL1.NewErr[*dictTopicSub](err)
 	}
 	kCtx := resCtx.Val()
 	sf := &dictTopicSub{
 		kCtx:          kCtx,
-		dictTopicHook: map[ATopic]IDictSubHook{},
+		dictTopicHook: map[mKa.ATopic]mKt.IDictSubHook{},
 	}
-	return NewRes(sf)
+	return mL1.NewRes(sf)
 }
 
 // Read -- вызывает обработчики при поступлении события.
-func (sf *dictTopicSub) Read(topic ATopic, binMsg []byte) {
+func (sf *dictTopicSub) Read(topic mKa.ATopic, binMsg []byte) {
 	sf.RLock()
 	defer sf.RUnlock()
 	if topic == "" {
@@ -59,24 +59,24 @@ func (sf *dictTopicSub) Read(topic ATopic, binMsg []byte) {
 }
 
 // Subscribe -- подписывает обработчик на топик.
-func (sf *dictTopicSub) Subscribe(handler IBusHandlerSubscribe) IResult[bool] {
+func (sf *dictTopicSub) Subscribe(handler mKt.IBusHandlerSubscribe) mKt.IResult[bool] {
 	sf.Lock()
 	defer sf.Unlock()
 	if handler == nil {
 		err := fmt.Errorf("dictTopicSub.Subscribe(): handler==nil")
-		return NewErr[bool](err)
+		return mL1.NewErr[bool](err)
 	}
 	topic := handler.Topic()
 	if topic == "" {
 		err := fmt.Errorf("dictTopicSub.Subscribe(): topic==\"\"")
-		return NewErr[bool](err)
+		return mL1.NewErr[bool](err)
 	}
 	dictSubHook := sf.dictTopicHook[topic]
 	if dictSubHook == nil {
 		resNewDictTopicSub := dict_sub_hook.NewDictSubHook()
 		if resNewDictTopicSub.IsErr() {
 			err := fmt.Errorf("dictTopicSub.Subscribe(): NewDictSubHook(), err=\n\t%w", resNewDictTopicSub.Err())
-			return NewErr[bool](err)
+			return mL1.NewErr[bool](err)
 		}
 		dictSubHook = resNewDictTopicSub.Val()
 		sf.dictTopicHook[topic] = dictSubHook
@@ -84,13 +84,13 @@ func (sf *dictTopicSub) Subscribe(handler IBusHandlerSubscribe) IResult[bool] {
 	res := dictSubHook.Subscribe(handler)
 	if res.IsErr() {
 		err := fmt.Errorf("dictTopicSub.Subscribe(): in add subscribe dict handler, err=\n\t%w", res.Err())
-		return NewErr[bool](err)
+		return mL1.NewErr[bool](err)
 	}
-	return NewRes(true)
+	return mL1.NewRes(true)
 }
 
 // Unsubscribe -- отписывает обработчик.
-func (sf *dictTopicSub) Unsubscribe(handler IBusHandlerSubscribe) {
+func (sf *dictTopicSub) Unsubscribe(handler mKt.IBusHandlerSubscribe) {
 	sf.Lock()
 	defer sf.Unlock()
 	if handler == nil {

+ 37 - 37
v4/lev2/kbus_base/kbus_base.go

@@ -5,9 +5,9 @@ import (
 	"fmt"
 	"sync"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
+	mKa "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
+	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/dict_topic_serve"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kbus/dict_topic_sub"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx"
@@ -19,12 +19,12 @@ const (
 
 // KBusBase -- базовая часть шины данных.
 type KBusBase struct {
-	Ctx_      IKernelCtx
-	IsWork_   ISafeBool
-	ctx       ILocalCtx
-	log       ILogBuf
-	dictSub   IDictTopicSub
-	dictServe IDictTopicServe
+	Ctx_      mKt.IKernelCtx
+	IsWork_   mKt.ISafeBool
+	ctx       mKt.ILocalCtx
+	log       mKt.ILogBuf
+	dictSub   mKt.IDictTopicSub
+	dictServe mKt.IDictTopicServe
 }
 
 var (
@@ -33,38 +33,38 @@ var (
 )
 
 // GetKernelBusBase -- возвращает базовую шину сообщений.
-func GetKernelBusBase() IResult[*KBusBase] {
+func GetKernelBusBase() mKt.IResult[*KBusBase] {
 	block.Lock()
 	defer block.Unlock()
 	if Bus_ != nil {
-		return NewRes(Bus_)
+		return mL1.NewRes(Bus_)
 	}
 	resKernCtx := kctx.GetKernelCtx()
 	if resKernCtx.IsErr() {
 		err := fmt.Errorf("GetKernelBusBase(): in get from kernCtx, err=\n\t%w", resKernCtx.Err())
-		return NewErr[*KBusBase](err)
+		return mL1.NewErr[*KBusBase](err)
 	}
 	kCtx := resKernCtx.Val()
-	resLocCtx := NewLocalCtx(kCtx.Ctx())
+	resLocCtx := mL1.NewLocalCtx(kCtx.Ctx())
 	if resLocCtx.IsErr() {
 		err := fmt.Errorf("GetKernelBusBase(): in get from localCtx, err=\n\t%w", resLocCtx.Err())
-		return NewErr[*KBusBase](err)
+		return mL1.NewErr[*KBusBase](err)
 	}
 	resDictServe := dict_topic_serve.NewDictServe()
 	if resDictServe.IsErr() {
 		err := fmt.Errorf("GetKernelBusBase(): in get from dictServe, err=\n\t%w", resDictServe.Err())
-		return NewErr[*KBusBase](err)
+		return mL1.NewErr[*KBusBase](err)
 	}
 	resDictTopicSu := dict_topic_sub.NewDictTopicSub()
 	if resDictTopicSu.IsErr() {
 		err := fmt.Errorf("GetKernelBusBase(): in get from dictTopicSu, err=\n\t%w", resDictTopicSu.Err())
-		return NewErr[*KBusBase](err)
+		return mL1.NewErr[*KBusBase](err)
 	}
 	Bus_ = &KBusBase{
 		Ctx_:      resKernCtx.Val(),
-		IsWork_:   NewSafeBool(),
+		IsWork_:   mL1.NewSafeBool(),
 		dictSub:   resDictTopicSu.Val(),
-		dictServe: IDictTopicServe(resDictServe.Val()),
+		dictServe: mKt.IDictTopicServe(resDictServe.Val()),
 		ctx:       resLocCtx.Val(),
 	}
 	Bus_.log = Bus_.ctx.Log()
@@ -76,14 +76,14 @@ func GetKernelBusBase() IResult[*KBusBase] {
 	resSet := Bus_.Ctx_.Set("kernBusBase", Bus_, "base of data bus")
 	if resSet.IsErr() {
 		err := fmt.Errorf("GetKernelBusBase(): in set kernel bus base to kernel ctx, err=\n\t%w", resSet.Err())
-		return NewErr[*KBusBase](err)
+		return mL1.NewErr[*KBusBase](err)
 	}
-	_ = IKernelBus(Bus_)
-	return NewRes(Bus_)
+	_ = mKt.IKernelBus(Bus_)
+	return mL1.NewRes(Bus_)
 }
 
 // Log -- возвращает лог шины.
-func (sf *KBusBase) Log() ILogBuf {
+func (sf *KBusBase) Log() mKt.ILogBuf {
 	return sf.log
 }
 
@@ -95,71 +95,71 @@ func (sf *KBusBase) run() {
 }
 
 // Unsubscribe -- отписывает обработчик от топика.
-func (sf *KBusBase) Unsubscribe(handler IBusHandlerSubscribe) {
+func (sf *KBusBase) Unsubscribe(handler mKt.IBusHandlerSubscribe) {
 	sf.log.Debug("KBusBase.Unsubscribe(): handler='%v'", handler.Name())
 	sf.dictSub.Unsubscribe(handler)
 }
 
 // Subscribe -- подписывает обработчик на топик.
-func (sf *KBusBase) Subscribe(handler IBusHandlerSubscribe) IResult[bool] {
+func (sf *KBusBase) Subscribe(handler mKt.IBusHandlerSubscribe) mKt.IResult[bool] {
 	sf.log.Debug("KBusBase.Subscribe(): handler='%v'", handler.Name())
 	if !sf.IsWork_.Get() {
 		err := fmt.Errorf("KBusBase.Subscribe():  handler='%v', bus already closed", handler.Name())
 		sf.log.Err(err.Error())
-		return NewErr[bool](err)
+		return mL1.NewErr[bool](err)
 	}
 	res := sf.dictSub.Subscribe(handler)
 	if res.IsErr() {
 		err := fmt.Errorf("KBusBase.Subscribe(): handler='%v', err=\n\t%w", handler.Name(), res.Err())
 		sf.log.Err(err.Error())
-		return NewErr[bool](err)
+		return mL1.NewErr[bool](err)
 	}
-	return NewRes(true)
+	return mL1.NewRes(true)
 }
 
 // SendRequest -- отправляет запрос в шину данных.
-func (sf *KBusBase) SendRequest(topic ATopic, binReq []byte) IResult[[]byte] {
+func (sf *KBusBase) SendRequest(topic mKa.ATopic, binReq []byte) mKt.IResult[[]byte] {
 	sf.log.Debug("KBusBase.SendRequest(): topic='%v'", topic)
 	if !sf.IsWork_.Get() {
 		err := fmt.Errorf("KBusBase.SendRequest():  topic='%v', bus already closed", topic)
 		sf.log.Err(err.Error())
-		return NewErr[[]byte](err)
+		return mL1.NewErr[[]byte](err)
 	}
 	res := sf.dictServe.SendRequest(topic, binReq)
 	if res.IsErr() {
 		err := fmt.Errorf("KBusBase.SendRequest(): topic='%v', err=\n\t%w", topic, res.Err())
 		sf.log.Err(err.Error())
-		return NewErr[[]byte](err)
+		return mL1.NewErr[[]byte](err)
 	}
 	return res
 }
 
 // RegisterServe -- регистрирует обработчики входящих запросов.
-func (sf *KBusBase) RegisterServe(handler IBusHandlerServe) IResult[bool] {
+func (sf *KBusBase) RegisterServe(handler mKt.IBusHandlerServe) mKt.IResult[bool] {
 	if handler == nil {
-		return NewErr[bool](fmt.Errorf("KBusBase.RegisterServe(): IBusHandlerServe==nil"))
+		return mL1.NewErr[bool](fmt.Errorf("KBusBase.RegisterServe(): IBusHandlerServe==nil"))
 	}
 	sf.log.Debug("KBusBase.RegisterServe(): handler='%v'", handler.Name())
 	res := sf.dictServe.Register(handler)
 	if res.IsErr() {
 		err := fmt.Errorf("KBusBase.RegisterServe(): handler='%v', err=\n\t%w", handler.Name(), res.Err())
 		sf.log.Err(err.Error())
-		return NewErr[bool](err)
+		return mL1.NewErr[bool](err)
 	}
-	return NewRes(true)
+	return mL1.NewRes(true)
 }
 
 // Publish -- публикует сообщение в шину.
-func (sf *KBusBase) Publish(topic ATopic, binMsg []byte) IResult[bool] {
+func (sf *KBusBase) Publish(topic mKa.ATopic, binMsg []byte) mKt.IResult[bool] {
 	sf.log.Debug("KBusBase.Publish(): topic='%v'", topic)
 	if !sf.IsWork_.Get() {
 		err := fmt.Errorf("KBusBase.Publish(): topic='%v',bus already closed", topic)
 		sf.log.Err(err.Error())
-		return NewErr[bool](err)
+		return mL1.NewErr[bool](err)
 	}
 	// Асинхронный запуск чтения
 	go sf.dictSub.Read(topic, binMsg)
-	return NewRes(true)
+	return mL1.NewRes(true)
 }
 
 // IsWork -- возвращает признак работы шины.

+ 48 - 48
v4/lev2/kbus_http/client_bus_http/client_bus_http.go

@@ -10,9 +10,9 @@ import (
 
 	"github.com/google/uuid"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
+	mKa "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
+	mKt "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
+	mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/kbus_msg/msg_pub"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/kbus_msg/msg_serve"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/kbus_msg/msg_sub"
@@ -24,56 +24,56 @@ import (
 
 // ClientBusHttp -- клиент HTTP-шины.
 type ClientBusHttp struct {
-	bus       IKernelBus
-	ctx       ILocalCtx
-	log       ILogBuf
-	isWork    ISafeBool
+	bus       mKt.IKernelBus
+	ctx       mKt.ILocalCtx
+	log       mKt.ILogBuf
+	isWork    mKt.ISafeBool
 	urlRemote string // URL дистанционной шины
 	urlLocal  string // URL локальной шины для веб-хуков
 }
 
 // NewClientBusHttp - -возвращает новый клиент HTTP-шины.
-func NewClientBusHttp(urlRemote string) IResult[IBusClient] {
-	log := NewLogBuf(OptIsTerm(true), OptPrefix("ClientBusHttp"))
+func NewClientBusHttp(urlRemote string) mKt.IResult[mKt.IBusClient] {
+	log := mL1.NewLogBuf(mL1.OptIsTerm(true), mL1.OptPrefix("ClientBusHttp"))
 	log.Debug("NewClientBusHttp()")
 	if urlRemote == "" {
 		err := fmt.Errorf("NewClientBusHttp(): urlRemote is empty")
-		return NewErr[IBusClient](err)
+		return mL1.NewErr[mKt.IBusClient](err)
 	}
 	resKernCtx := kctx.GetKernelCtx()
 	if resKernCtx.IsErr() {
 		err := fmt.Errorf("NewClientBusHttp(): in get ctx, err=\n\t%w", resKernCtx.Err())
-		return NewErr[IBusClient](err)
+		return mL1.NewErr[mKt.IBusClient](err)
 	}
 	kCtx := resKernCtx.Val()
 	resLocal := safe_string.NewSafeStringGetenv("LOCAL_HTTP_URL")
 	if resLocal.IsErr() {
 		err := fmt.Errorf("NewClientBusHttp(): in get env LOCAL_HTTP_URL, err=\n\t%w", resLocal.Err())
-		return NewErr[IBusClient](err)
+		return mL1.NewErr[mKt.IBusClient](err)
 	}
 	urlLocal := resLocal.Val()
 	resBus := kbus_http.GetKernelBusHttp()
 	if resBus.IsErr() {
 		err := fmt.Errorf("NewClientBusHttp(): in get bus, err=\n\t%w", resBus.Err())
-		return NewErr[IBusClient](err)
+		return mL1.NewErr[mKt.IBusClient](err)
 	}
 	kBusHttp := resBus.Val()
-	lCtx := NewLocalCtx(kCtx.Ctx())
+	lCtx := mL1.NewLocalCtx(kCtx.Ctx())
 	sf := &ClientBusHttp{
 		ctx:       lCtx.Val(),
 		log:       log,
 		bus:       kBusHttp,
-		isWork:    NewSafeBool(),
+		isWork:    mL1.NewSafeBool(),
 		urlRemote: strings.TrimSuffix(urlRemote, "/"),
 		urlLocal:  strings.TrimSuffix(urlLocal.Get(), "/"),
 	}
-	return NewRes(IBusClient(sf))
+	return mL1.NewRes(mKt.IBusClient(sf))
 }
 
 // Unsubscribe -- отписывается от топика в дистанционной шине.
-func (sf *ClientBusHttp) Unsubscribe(handler IBusHandlerSubscribe) {
+func (sf *ClientBusHttp) Unsubscribe(handler mKt.IBusHandlerSubscribe) {
 	_uuid, err := uuid.NewV6()
-	Hassert()(err == nil, "ClientBusHttp.Unsubscribe(): in generate UUID v6, err=\n\t%v", err)
+	mL1.Hassert()(err == nil, "ClientBusHttp.Unsubscribe(): in generate UUID v6, err=\n\t%v", err)
 
 	req := &msg_unsub.UnsubReq{
 		Name_: handler.Name(),
@@ -81,11 +81,11 @@ func (sf *ClientBusHttp) Unsubscribe(handler IBusHandlerSubscribe) {
 	}
 	req.SelfCheck()
 	binReq, err := json.MarshalIndent(req, "", "  ")
-	Hassert()(err == nil, "ClientBusHttp.Unsubscribe(): in marshal to JSON unsubscribe request, err=\n\t%v", err)
+	mL1.Hassert()(err == nil, "ClientBusHttp.Unsubscribe(): in marshal to JSON unsubscribe request, err=\n\t%v", err)
 	reader := strings.NewReader(string(binReq))
 
 	hReq, err := http.NewRequest(http.MethodPost, sf.urlRemote+"/bus/unsub", reader)
-	Hassert()(err == nil, "ClientBusHttp.Unsubscribe(): in new request, err=\n\t%v", err)
+	mL1.Hassert()(err == nil, "ClientBusHttp.Unsubscribe(): in new request, err=\n\t%v", err)
 
 	binBody, err := sf.makePost(hReq)
 	if err != nil {
@@ -107,9 +107,9 @@ func (sf *ClientBusHttp) Unsubscribe(handler IBusHandlerSubscribe) {
 }
 
 // Subscribe -- подписывается на топик в дистанционной шине.
-func (sf *ClientBusHttp) Subscribe(handler IBusHandlerSubscribe) IResult[bool] {
+func (sf *ClientBusHttp) Subscribe(handler mKt.IBusHandlerSubscribe) mKt.IResult[bool] {
 	_uuid, err := uuid.NewV6()
-	Hassert()(err == nil, "ClientBusHttp.Subscribe(): in generate UUID v6, err=\n\t%v", err)
+	mL1.Hassert()(err == nil, "ClientBusHttp.Subscribe(): in generate UUID v6, err=\n\t%v", err)
 	req := &msg_sub.SubscribeReq{
 		Topic_:   handler.Topic(),
 		Uuid_:    _uuid.String(),
@@ -120,35 +120,35 @@ func (sf *ClientBusHttp) Subscribe(handler IBusHandlerSubscribe) IResult[bool] {
 	body := strings.NewReader(string(binReq))
 
 	hReq, err := http.NewRequest(http.MethodPost, sf.urlRemote+"/bus/sub", body)
-	Hassert()(err == nil, "ClientBusHttp.Subscribe(): in new request, err=\n\t%v")
+	mL1.Hassert()(err == nil, "ClientBusHttp.Subscribe(): in new request, err=\n\t%v")
 
 	binBody, err := sf.makePost(hReq)
 	if err != nil {
 		err := fmt.Errorf("ClientBusHttp.Subscribe(): in make request, err=\n\t%w", err)
-		return NewErr[bool](err)
+		return mL1.NewErr[bool](err)
 	}
 	resp := &msg_sub.SubscribeResp{}
 	err = json.Unmarshal(binBody, resp)
 	if err != nil {
 		err := fmt.Errorf("ClientBusHttp.Subscribe(): in unmarshal response, err=\n\t%v", err)
-		return NewErr[bool](err)
+		return mL1.NewErr[bool](err)
 	}
 	if resp.Status_ != "ok" {
 		err := fmt.Errorf("ClientBusHttp.Subscribe(): resp!='ok', err=\n\t%v", resp.Status_)
-		return NewErr[bool](err)
+		return mL1.NewErr[bool](err)
 	}
 	if resp.Uuid_ != req.Uuid_ {
 		err := fmt.Errorf("ClientBusHttp.Subscribe(): resp uuid(%v) bad", resp.Uuid_)
-		return NewErr[bool](err)
+		return mL1.NewErr[bool](err)
 	}
 	res := sf.bus.Subscribe(handler)
 	return res
 }
 
 // SendRequest -- отправляет в дистанционную шину запрос.
-func (sf *ClientBusHttp) SendRequest(topic ATopic, binReq []byte) IResult[[]byte] {
+func (sf *ClientBusHttp) SendRequest(topic mKa.ATopic, binReq []byte) mKt.IResult[[]byte] {
 	_uuid, err := uuid.NewV6()
-	Hassert()(err == nil, "ClientBusHttp.SendRequest(): in generate UUID v6, err=\n\t%v", err)
+	mL1.Hassert()(err == nil, "ClientBusHttp.SendRequest(): in generate UUID v6, err=\n\t%v", err)
 	req := &msg_serve.ServeReq{
 		Topic_:  topic,
 		Uuid_:   _uuid.String(),
@@ -159,47 +159,47 @@ func (sf *ClientBusHttp) SendRequest(topic ATopic, binReq []byte) IResult[[]byte
 	body := strings.NewReader(string(_binReq))
 
 	hReq, err := http.NewRequest(http.MethodPost, sf.urlRemote+"/bus/request", body)
-	Hassert()(err == nil, "ClientBusHttp.SendRequest(): in new request, err=\n\t%v")
+	mL1.Hassert()(err == nil, "ClientBusHttp.SendRequest(): in new request, err=\n\t%v")
 
 	binBody, err := sf.makePost(hReq)
 	if err != nil {
 		err := fmt.Errorf("ClientBusHttp.SendRequest(): in make request, err=\n\t%w", err)
-		return NewErr[[]byte](err)
+		return mL1.NewErr[[]byte](err)
 	}
 	resp := &msg_serve.ServeResp{}
 	err = json.Unmarshal(binBody, resp)
 	if err != nil {
 		err := fmt.Errorf("ClientBusHttp.SendRequest(): in unmarshal response, err=\n\t%v", err)
-		return NewErr[[]byte](err)
+		return mL1.NewErr[[]byte](err)
 	}
 	if resp.Status_ != "ok" {
 		err := fmt.Errorf("ClientBusHttp.SendRequest(): resp!='ok', err=\n\t%v", resp.Status_)
-		return NewErr[[]byte](err)
+		return mL1.NewErr[[]byte](err)
 	}
 	if resp.Uuid_ != req.Uuid_ {
 		err := fmt.Errorf("ClientBusHttp.SendRequest(): resp uuid(%v) bad", resp.Uuid_)
-		return NewErr[[]byte](err)
+		return mL1.NewErr[[]byte](err)
 	}
-	return NewRes(resp.BinResp_)
+	return mL1.NewRes(resp.BinResp_)
 }
 
 // RegisterServe -- регистрирует в локальной шине обработчик.
-func (sf *ClientBusHttp) RegisterServe(handler IBusHandlerServe) IResult[bool] {
+func (sf *ClientBusHttp) RegisterServe(handler mKt.IBusHandlerServe) mKt.IResult[bool] {
 	if handler == nil {
-		return NewErr[bool](fmt.Errorf("ClientBusHttp.RegisterServe(): handler==nil"))
+		return mL1.NewErr[bool](fmt.Errorf("ClientBusHttp.RegisterServe(): handler==nil"))
 	}
 	res := sf.bus.RegisterServe(handler)
 	if res.IsErr() {
 		err := fmt.Errorf("ClientBusHttp.RegisterServe(): in register serve to bus, err=\n\t%v", res.Err())
-		return NewErr[bool](err)
+		return mL1.NewErr[bool](err)
 	}
-	return NewRes(true)
+	return mL1.NewRes(true)
 }
 
 // Publish -- публикует сообщение в дистанционной шину.
-func (sf *ClientBusHttp) Publish(topic ATopic, binMsg []byte) IResult[bool] {
+func (sf *ClientBusHttp) Publish(topic mKa.ATopic, binMsg []byte) mKt.IResult[bool] {
 	_uuid, err := uuid.NewV6()
-	Hassert()(err == nil, "ClientBusHttp.Publish(): in generate UUID v6, err=\n\t%v", err)
+	mL1.Hassert()(err == nil, "ClientBusHttp.Publish(): in generate UUID v6, err=\n\t%v", err)
 	req := &msg_pub.PublishReq{
 		Topic_:  topic,
 		Uuid_:   _uuid.String(),
@@ -210,28 +210,28 @@ func (sf *ClientBusHttp) Publish(topic ATopic, binMsg []byte) IResult[bool] {
 	body := strings.NewReader(string(binReq))
 
 	hReq, err := http.NewRequest(http.MethodPost, sf.urlRemote+"/bus/pub", body)
-	Hassert()(err == nil, "ClientBusHttp.Publish(): in new request, err=\n\t%v")
+	mL1.Hassert()(err == nil, "ClientBusHttp.Publish(): in new request, err=\n\t%v")
 
 	binBody, err := sf.makePost(hReq)
 	if err != nil {
 		err := fmt.Errorf("ClientBusHttp.Publish(): in make request, err=\n\t%w", err)
-		return NewErr[bool](err)
+		return mL1.NewErr[bool](err)
 	}
 	resp := &msg_pub.PublishResp{}
 	err = json.Unmarshal(binBody, resp)
 	if err != nil {
 		err := fmt.Errorf("ClientBusHttp.Publish(): in unmarshal response, err=\n\t%v", err)
-		return NewErr[bool](err)
+		return mL1.NewErr[bool](err)
 	}
 	if resp.Status_ != "ok" {
 		err := fmt.Errorf("ClientBusHttp.Publish(): resp!='ok', err=\n\t%v", resp.Status_)
-		return NewErr[bool](err)
+		return mL1.NewErr[bool](err)
 	}
 	if resp.Uuid_ != req.Uuid_ {
 		err := fmt.Errorf("ClientBusHttp.Publish(): resp uuid(%v) bad", resp.Uuid_)
-		return NewErr[bool](err)
+		return mL1.NewErr[bool](err)
 	}
-	return NewRes(true)
+	return mL1.NewRes(true)
 }
 
 // Единый обработчик запросов.
@@ -253,7 +253,7 @@ func (sf *ClientBusHttp) makePost(hReq *http.Request) ([]byte, error) {
 }
 
 // Log -- возвращает локальный лог клиента.
-func (sf *ClientBusHttp) Log() ILogBuf {
+func (sf *ClientBusHttp) Log() mKt.ILogBuf {
 	return sf.log
 }
 

+ 12 - 12
v4/lev2/kbus_http/kbus_http.go

@@ -8,8 +8,8 @@ import (
 
 	"github.com/gofiber/fiber/v2"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
+	mKt "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
+	mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/kbus_msg/msg_pub"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/kbus_msg/msg_serve"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/kbus_msg/msg_sub"
@@ -23,7 +23,7 @@ import (
 // kBusHttp -- шина данных поверх HTTP.
 type kBusHttp struct {
 	*kbus_base.KBusBase
-	log ILogBuf
+	log mKt.ILogBuf
 }
 
 var (
@@ -32,24 +32,24 @@ var (
 )
 
 // GetKernelBusHttp -- возвращает шину HTTP.
-func GetKernelBusHttp() IResult[IKernelBus] {
+func GetKernelBusHttp() mKt.IResult[mKt.IKernelBus] {
 	block.Lock()
 	defer block.Unlock()
 	if Bus_ != nil {
-		return NewRes(IKernelBus(Bus_))
+		return mL1.NewRes(mKt.IKernelBus(Bus_))
 	}
-	log := NewLogBuf(OptIsTerm(true), OptPrefix("kBusHttp"))
+	log := mL1.NewLogBuf(mL1.OptIsTerm(true), mL1.OptPrefix("kBusHttp"))
 	log.Debug("GetKernelBusHttp(): new")
 	resKernCtx := kctx.GetKernelCtx()
 	if resKernCtx.IsErr() {
 		err := fmt.Errorf("GetKernelBusHttp(): err=\n\t%v", resKernCtx.Err())
-		return NewErr[IKernelBus](err)
+		return mL1.NewErr[mKt.IKernelBus](err)
 	}
 	kCtx := resKernCtx.Val()
 	resBus := kbus_base.GetKernelBusBase()
 	if resBus.IsErr() {
 		err := fmt.Errorf("GetKernelBusHttp(): err=\n\t%v", resBus.Err())
-		return NewErr[IKernelBus](err)
+		return mL1.NewErr[mKt.IKernelBus](err)
 	}
 	sf := &kBusHttp{
 		KBusBase: resBus.Val(),
@@ -58,7 +58,7 @@ func GetKernelBusHttp() IResult[IKernelBus] {
 	resServ := kserv_http.GetKernelServHttp()
 	if resServ.IsErr() {
 		err := fmt.Errorf("GetKernelBusHttp(): err=\n\t%v", resServ.Err())
-		return NewErr[IKernelBus](err)
+		return mL1.NewErr[mKt.IKernelBus](err)
 	}
 	serv := resServ.Val()
 	fibApp := serv.Fiber()
@@ -69,10 +69,10 @@ func GetKernelBusHttp() IResult[IKernelBus] {
 	resSet := kCtx.Set("kernBus", sf, "GetKernelBusHttp(): http data bus")
 	if resSet.IsErr() {
 		sf.log.Err("GetKernelBusHttp(): err=\n\t%v", resSet.Err())
-		return NewErr[IKernelBus](resSet.Err())
+		return mL1.NewErr[mKt.IKernelBus](resSet.Err())
 	}
 	Bus_ = sf
-	return NewRes(IKernelBus(Bus_))
+	return mL1.NewRes(mKt.IKernelBus(Bus_))
 }
 
 // Входящий запрос HTTP на подписку.
@@ -233,7 +233,7 @@ func (sf *kBusHttp) processUnsubRequest(req *msg_unsub.UnsubReq) *msg_unsub.Unsu
 		resp.Status_ = fmt.Sprintf("kernelBusHttp.processUnsubRequest(): handler(%v) not exists", req.Name_)
 		return resp
 	}
-	hand := optHandler.Val().Val().(IBusHandlerSubscribe)
+	hand := optHandler.Val().Val().(mKt.IBusHandlerSubscribe)
 	sf.Unsubscribe(hand)
 	return resp
 }

+ 6 - 6
v4/lev2/kbus_local/client_bus_local/client_bus_local.go

@@ -4,25 +4,25 @@ package client_bus_local
 import (
 	"fmt"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
+	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_local"
 )
 
 // ClientBusLocal -- клиент локальной шины.
 type ClientBusLocal struct {
-	IKernelBus
+	mKt.IKernelBus
 }
 
 // NewClientBusLocal -- клиент локальной шины.
-func NewClientBusLocal() IResult[IBusClient] {
+func NewClientBusLocal() mKt.IResult[mKt.IBusClient] {
 	resLocal := kbus_local.GetKernelBusLocal()
 	if resLocal.IsErr() {
 		err := fmt.Errorf("NewClientBusLocal(): err=\n\t%w", resLocal.Err())
-		return NewErr[IBusClient](err)
+		return mL1.NewErr[mKt.IBusClient](err)
 	}
 	sf := &ClientBusLocal{
 		IKernelBus: resLocal.Val(),
 	}
-	return NewRes(IBusClient(sf))
+	return mL1.NewRes(mKt.IBusClient(sf))
 }

+ 6 - 6
v4/lev2/kbus_local/kbus_local.go

@@ -4,8 +4,8 @@ package kbus_local
 import (
 	"fmt"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
+	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_base"
 )
 
@@ -19,17 +19,17 @@ var (
 )
 
 // GetKernelBusLocal -- возвращает локальную шину сообщений.
-func GetKernelBusLocal() IResult[*kernelBusLocal] {
+func GetKernelBusLocal() mKt.IResult[*kernelBusLocal] {
 	if bus != nil {
-		return NewRes(bus)
+		return mL1.NewRes(bus)
 	}
 	resBus := kbus_base.GetKernelBusBase()
 	if resBus.IsErr() {
 		err := fmt.Errorf("GetKernelBusLocal(): in get kernel bus base, err=\n\t%w", resBus.Err())
-		return NewErr[*kernelBusLocal](err)
+		return mL1.NewErr[*kernelBusLocal](err)
 	}
 	bus = &kernelBusLocal{
 		KBusBase: resBus.Val(),
 	}
-	return NewRes(bus)
+	return mL1.NewRes(bus)
 }

+ 16 - 16
v4/lev2/kctx/kctx.go

@@ -6,21 +6,21 @@ import (
 	"fmt"
 	"sync"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
+	mKt "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
+	mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kernel_keeper"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kwg"
 )
 
 // kCtx -- контекст ядра.
 type kCtx struct {
-	ILocalCtx
-	log        ILogBuf
-	ctxBg      context.Context // Неотменяемый контекст ядра
-	ctx        context.Context // Отменяемый контекст ядра
-	fnCancel   func()          // Функция отмены контекста ядра
-	kernKeeper IKernelKeeper   // Встроенный сторож отмены контекста системным сигналом
-	kernWg     IKernelWg       // Встроенный ожидатель потока
+	mKt.ILocalCtx
+	log        mKt.ILogBuf
+	ctxBg      context.Context   // Неотменяемый контекст ядра
+	ctx        context.Context   // Отменяемый контекст ядра
+	fnCancel   func()            // Функция отмены контекста ядра
+	kernKeeper mKt.IKernelKeeper // Встроенный сторож отмены контекста системным сигналом
+	kernWg     mKt.IKernelWg     // Встроенный ожидатель потока
 }
 
 var (
@@ -29,11 +29,11 @@ var (
 )
 
 // GetKernelCtx -- возвращает контекст ядра.
-func GetKernelCtx() IResult[*kCtx] {
+func GetKernelCtx() mKt.IResult[*kCtx] {
 	block.Lock()
 	defer block.Unlock()
 	if kernCtx != nil {
-		return NewRes(kernCtx)
+		return mL1.NewRes(kernCtx)
 	}
 	ctxBg := context.Background()
 	ctx, fnCancel := context.WithCancel(ctxBg)
@@ -42,10 +42,10 @@ func GetKernelCtx() IResult[*kCtx] {
 		ctx:      ctx,
 		fnCancel: fnCancel,
 	}
-	resLocal := NewLocalCtx(sf.ctx)
+	resLocal := mL1.NewLocalCtx(sf.ctx)
 	if resLocal.IsErr() {
 		err := fmt.Errorf("GetKernelCtx(): in get local ctx, err=\n\t%w", resLocal.Err())
-		return NewErr[*kCtx](err)
+		return mL1.NewErr[*kCtx](err)
 	}
 	sf.ILocalCtx = resLocal.Val()
 	sf.log = sf.Log()
@@ -57,16 +57,16 @@ func GetKernelCtx() IResult[*kCtx] {
 	}
 	sf.kernKeeper = resKeep.Val()
 	kernCtx = sf
-	return NewRes(kernCtx)
+	return mL1.NewRes(kernCtx)
 }
 
 // Keeper -- возвращает сторож системных сигналов.
-func (sf *kCtx) Keeper() IKernelKeeper {
+func (sf *kCtx) Keeper() mKt.IKernelKeeper {
 	return sf.kernKeeper
 }
 
 // Wg -- возвращает ожидатель потоков.
-func (sf *kCtx) Wg() IKernelWg {
+func (sf *kCtx) Wg() mKt.IKernelWg {
 	return sf.kernWg
 }
 

+ 13 - 13
v4/lev2/kernel_keeper/kernel_keeper.go

@@ -9,16 +9,16 @@ import (
 	"sync"
 	"syscall"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
+	mKt "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
+	mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
 )
 
 // kernelKeeper -- сторож системных сигналов.
 type kernelKeeper struct {
 	ctx      context.Context
 	fnCancel func()
-	wg       IKernelWg
-	log      ILogBuf
+	wg       mKt.IKernelWg
+	log      mKt.ILogBuf
 	chSys_   chan os.Signal
 }
 
@@ -29,30 +29,30 @@ var (
 
 // GetKernelKeeper -- возвращает новый сторож системных сигналов.
 func GetKernelKeeper(ctx context.Context, fnCancel func(),
-	wg IKernelWg) IResult[*kernelKeeper] {
+	wg mKt.IKernelWg) mKt.IResult[*kernelKeeper] {
 	block.Lock()
 	defer block.Unlock()
 	if kernKeep != nil {
 		kernKeep.log.Debug("GetKernelKeeper()")
-		return NewRes(kernKeep)
+		return mL1.NewRes(kernKeep)
 	}
 	if ctx == nil {
 		err := fmt.Errorf("NewKernelCtx(): ctx==nil")
-		return NewErr[*kernelKeeper](err)
+		return mL1.NewErr[*kernelKeeper](err)
 	}
 	if wg == nil {
 		err := fmt.Errorf("NewKernelCtx(): IKernelWg==nil")
-		return NewErr[*kernelKeeper](err)
+		return mL1.NewErr[*kernelKeeper](err)
 	}
 	if fnCancel == nil {
 		err := fmt.Errorf("NewKernelCtx(): fnCancel==nil")
-		return NewErr[*kernelKeeper](err)
+		return mL1.NewErr[*kernelKeeper](err)
 	}
 	sf := &kernelKeeper{
 		ctx:      ctx,
 		fnCancel: fnCancel,
 		wg:       wg,
-		log:      NewLogBuf(OptIsTerm(true), OptPrefix("kernelKeeper")),
+		log:      mL1.NewLogBuf(mL1.OptIsTerm(true), mL1.OptPrefix("kernelKeeper")),
 		chSys_:   make(chan os.Signal, 2),
 	}
 	sf.log.Debug("GetKernelKeeper(): first run")
@@ -61,12 +61,12 @@ func GetKernelKeeper(ctx context.Context, fnCancel func(),
 
 	go sf.run(sf.chSys_)
 	kernKeep = sf
-	_ = IKernelKeeper(sf)
-	return NewRes(sf)
+	_ = mKt.IKernelKeeper(sf)
+	return mL1.NewRes(sf)
 }
 
 // Log -- возвращает лог сторожа системных сигналов.
-func (sf *kernelKeeper) Log() ILogBuf {
+func (sf *kernelKeeper) Log() mKt.ILogBuf {
 	return sf.log
 }
 

+ 31 - 34
v4/lev2/kmodule/kmodule.go

@@ -5,13 +5,10 @@ import (
 	"fmt"
 	"time"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/local_ctx"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/result"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/safe_int"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/safe_string"
+	mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
+	mKa "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
+	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_local"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kmodule/mod_stat"
@@ -19,78 +16,78 @@ import (
 
 // kModule -- модуль на основе ядра.
 type kModule struct {
-	kCtx      IKernelCtx
-	ctx       ILocalCtx
-	name      AModuleName
-	bus       IKernelBus
-	timePhase ISafeInt
-	strLive   ISafeString
-	stat      IModuleStat
+	kCtx      mKt.IKernelCtx
+	ctx       mKt.ILocalCtx
+	name      mKa.AModuleName
+	bus       mKt.IKernelBus
+	timePhase mKt.ISafeInt
+	strLive   mKt.ISafeString
+	stat      mKt.IModuleStat
 }
 
 // NewKernelModule -- возвращает новый модуль на основе ядра.
-func NewKernelModule(name AModuleName) IResult[IKernelModule] {
+func NewKernelModule(name mKa.AModuleName) mKt.IResult[mKt.IKernelModule] {
 	if name == "" {
 		err := fmt.Errorf("NewKernelModule(): name is empty")
-		return NewErr[IKernelModule](err)
+		return mL1.NewErr[mKt.IKernelModule](err)
 	}
 	resCtx := kctx.GetKernelCtx()
 	if resCtx.IsErr() {
 		err := fmt.Errorf("NewKernelModule(): in get kernel ctx,err=%v", resCtx.Err())
-		return NewErr[IKernelModule](err)
+		return mL1.NewErr[mKt.IKernelModule](err)
 	}
 	kCtx := resCtx.Val()
 	resLocal := kbus_local.GetKernelBusLocal()
 	if resLocal.IsErr() {
 		err := fmt.Errorf("NewKernelModule(): in get kernel bus local,err=%v", resLocal.Err())
-		return NewErr[IKernelModule](err)
+		return mL1.NewErr[mKt.IKernelModule](err)
 	}
-	resLocCtx := local_ctx.NewLocalCtx(kCtx.Ctx())
+	resLocCtx := mL1.NewLocalCtx(kCtx.Ctx())
 	if resLocCtx.IsErr() {
 		err := fmt.Errorf("NewKernelModule(): in new local ctx,err=%v", resLocCtx.Err())
-		return NewErr[IKernelModule](err)
+		return mL1.NewErr[mKt.IKernelModule](err)
 	}
 	sf := &kModule{
 		kCtx:      kCtx,
 		ctx:       resLocCtx.Val(),
 		name:      name,
 		bus:       resLocal.Val(),
-		timePhase: safe_int.NewSafeInt(1000), // 1000 msec
-		strLive:   safe_string.NewSafeString(),
+		timePhase: mL1.NewSafeInt(1000), // 1000 msec
+		strLive:   mL1.NewSafeString(),
 		stat:      mod_stat.NewModStat(name),
 	}
 	go sf.sigLive()
-	return NewRes(IKernelModule(sf))
+	return mL1.NewRes(mKt.IKernelModule(sf))
 }
 
 // Stat -- возвращает статистику модуля.
-func (sf *kModule) Stat() IModuleStat {
+func (sf *kModule) Stat() mKt.IModuleStat {
 	return sf.stat
 }
 
 // Log -- возвращает буферный лог.
-func (sf *kModule) Log() ILogBuf {
+func (sf *kModule) Log() mKt.ILogBuf {
 	return sf.ctx.Log()
 }
 
 // Ctx -- возвращает контекст модуля.
-func (sf *kModule) Ctx() ILocalCtx {
+func (sf *kModule) Ctx() mKt.ILocalCtx {
 	return sf.ctx
 }
 
 // Run -- запускает модуль в работу.
 func (sf *kModule) Run() {
-	Hassert(false, "kModule.Run(): module='%v', parent not realized this method", sf.name)
+	mKh.Hassert(false, "kModule.Run(): module='%v', parent not realized this method", sf.name)
 }
 
 // Name -- возвращает уникальное имя модуля.
-func (sf *kModule) Name() AModuleName {
+func (sf *kModule) Name() mKa.AModuleName {
 	return sf.name
 }
 
 // IsWork -- возвращает признак состояния работы.
 func (sf *kModule) IsWork() bool {
-	Hassert(false, "kModule.IsWork(): module='%v', parent not realized this method", sf.name)
+	mKh.Hassert(false, "kModule.IsWork(): module='%v', parent not realized this method", sf.name)
 	return false
 }
 
@@ -104,7 +101,7 @@ func (sf *kModule) sigLive() {
 	var (
 		topic  = sf.name + "_live"
 		iPhase = 0
-		res    IResult[bool]
+		res    mKt.IResult[bool]
 	)
 	fnPhase := func() {
 		time.Sleep(time.Millisecond * time.Duration(sf.timePhase.Get()))
@@ -115,16 +112,16 @@ func (sf *kModule) sigLive() {
 			switch iPhase {
 			case 0:
 				sf.strLive.Set("|")
-				res = sf.bus.Publish(ATopic(topic), sf.strLive.Byte())
+				res = sf.bus.Publish(mKa.ATopic(topic), sf.strLive.Byte())
 			case 1:
 				sf.strLive.Set("/")
-				res = sf.bus.Publish(ATopic(topic), sf.strLive.Byte())
+				res = sf.bus.Publish(mKa.ATopic(topic), sf.strLive.Byte())
 			case 2:
 				sf.strLive.Set("-")
-				res = sf.bus.Publish(ATopic(topic), sf.strLive.Byte())
+				res = sf.bus.Publish(mKa.ATopic(topic), sf.strLive.Byte())
 			case 3:
 				sf.strLive.Set("\\")
-				res = sf.bus.Publish(ATopic(topic), sf.strLive.Byte())
+				res = sf.bus.Publish(mKa.ATopic(topic), sf.strLive.Byte())
 				iPhase = -1
 			}
 			res.Hassert("kModule.sigLive(): name=%v, in publish live", sf.Name())

+ 9 - 9
v4/lev2/kmodule/mod_stat/mod_stat.go

@@ -11,10 +11,10 @@ package mod_stat
 import (
 	"time"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/safe_int"
+	mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
+	mKa "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
+	mKt "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
+	mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kmodule/mod_stat/mod_stat_day"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kmodule/mod_stat/mod_stat_sec"
 )
@@ -22,20 +22,20 @@ import (
 // ModStat -- статистика модуля.
 type ModStat struct {
 	statSec    *mod_stat_sec.ModStatSec // Объект статистики 60 секунд
-	timeMinute ISafeInt                 // Интервал ожидания минутного таймера, мсек
+	timeMinute mKt.ISafeInt             // Интервал ожидания минутного таймера, мсек
 	statMin    *mod_stat_day.ModStatDay // Объект статистики 60 минут
 	statDay    *mod_stat_day.ModStatDay // Объект статистики за последние 24 часа
-	name       AModuleName
+	name       mKa.AModuleName
 }
 
 // NewModStat -- возвращает новую статистику модуля.
-func NewModStat(name AModuleName) *ModStat {
-	Hassert(name != "", "NewModuleStat(): name module is empty")
+func NewModStat(name mKa.AModuleName) *ModStat {
+	mKh.Hassert(name != "", "NewModuleStat(): name module is empty")
 	sf := &ModStat{
 		statSec:    mod_stat_sec.NewModStatSec(),
 		statMin:    mod_stat_day.NewModStatDay(),
 		statDay:    mod_stat_day.NewModStatDay(),
-		timeMinute: safe_int.NewSafeInt(60 * 1000),
+		timeMinute: mL1.NewSafeInt(60 * 1000),
 		name:       name,
 	}
 	go sf.eventMinute()

+ 31 - 33
v4/lev2/kmonolit/kmonolit.go

@@ -4,25 +4,23 @@ package kmonolit
 import (
 	"fmt"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/local_ctx"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/result"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/safe_bool"
+	mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
+	mKa "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
+	mKt "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
+	mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx"
 )
 
 // kMonolit -- объект модульного монолита.
 type kMonolit struct {
-	kCtx    IKernelCtx
-	lCtx    ILocalCtx
-	log     ILogBuf
+	kCtx    mKt.IKernelCtx
+	lCtx    mKt.ILocalCtx
+	log     mKt.ILogBuf
 	name    string
 	isLocal bool
-	isWork  ISafeBool
-	isEnd   ISafeBool
-	dict    map[AModuleName]IKernelModule // Словарь модулей монолита
+	isWork  mKt.ISafeBool
+	isEnd   mKt.ISafeBool
+	dict    map[mKa.AModuleName]mKt.IKernelModule // Словарь модулей монолита
 }
 
 var (
@@ -30,62 +28,62 @@ var (
 )
 
 // GetMonolit -- возвращает монолит.
-func GetMonolit(name string) IResult[*kMonolit] {
+func GetMonolit(name string) mKt.IResult[*kMonolit] {
 	if mon != nil {
-		return NewRes(mon)
+		return mL1.NewRes(mon)
 	}
-	Hassert(name != "", "NewMonolit(): name is empty")
+	mKh.Hassert(name != "", "NewMonolit(): name is empty")
 	resKernCtx := kctx.GetKernelCtx()
 	if resKernCtx.IsErr() {
 		err := fmt.Errorf("GetMonolit(): err=\n\t%w", resKernCtx.Err())
-		return NewErr[*kMonolit](err)
+		return mL1.NewErr[*kMonolit](err)
 	}
 	kCtx := resKernCtx.Val()
 	res := kCtx.Get("isLocal")
 	if res.IsNone() {
 		err := fmt.Errorf("GetMonolit(): in get from kernCtx isLocal -- not found")
-		return NewErr[*kMonolit](err)
+		return mL1.NewErr[*kMonolit](err)
 	}
 	isLocalCtx := res.Val()
 	isLocal := isLocalCtx.Val().(bool)
-	resLocCtx := local_ctx.NewLocalCtx(kCtx.Ctx())
+	resLocCtx := mL1.NewLocalCtx(kCtx.Ctx())
 	if resLocCtx.IsErr() {
 		err := fmt.Errorf("GetMonolit(): in new local_ctx, err=\n\t%w", resLocCtx.Err())
-		return NewErr[*kMonolit](err)
+		return mL1.NewErr[*kMonolit](err)
 	}
 	lCtx := resLocCtx.Val()
 	sf := &kMonolit{
 		kCtx:    kCtx,
 		lCtx:    lCtx,
 		name:    name,
-		dict:    map[AModuleName]IKernelModule{},
-		isWork:  safe_bool.NewSafeBool(),
-		isEnd:   safe_bool.NewSafeBool(),
+		dict:    map[mKa.AModuleName]mKt.IKernelModule{},
+		isWork:  mL1.NewSafeBool(),
+		isEnd:   mL1.NewSafeBool(),
 		isLocal: isLocal,
 	}
 	sf.log = sf.lCtx.Log()
 	resSet := sf.kCtx.Set("monolitName", name, "name of monolit")
 	if resSet.IsErr() {
 		err := fmt.Errorf("GetMonolit(): in set to kernCtx monolitName, err=\n\t%w", resSet.Err())
-		return NewErr[*kMonolit](err)
+		return mL1.NewErr[*kMonolit](err)
 	}
 	resSet = sf.kCtx.Set("monolit", sf, "monolit-app")
 	if resSet.IsErr() {
 		err := fmt.Errorf("GetMonolit(): in set to kernCtx monolit-app, err=\n\t%w", resSet.Err())
-		return NewErr[*kMonolit](err)
+		return mL1.NewErr[*kMonolit](err)
 	}
 	mon = sf
-	_ = IKernelMonolit(sf)
-	return NewRes(sf)
+	_ = mKt.IKernelMonolit(sf)
+	return mL1.NewRes(sf)
 }
 
 // Ctx -- возвращает контекст монолита.
-func (sf *kMonolit) Ctx() ILocalCtx {
+func (sf *kMonolit) Ctx() mKt.ILocalCtx {
 	return sf.lCtx
 }
 
 // Log -- возвращает лог монолита.
-func (sf *kMonolit) Log() ILogBuf {
+func (sf *kMonolit) Log() mKt.ILogBuf {
 	return sf.lCtx.Log()
 }
 
@@ -95,16 +93,16 @@ func (sf *kMonolit) Name() string {
 }
 
 // Add -- добавляет модуль в монолит.
-func (sf *kMonolit) Add(module IKernelModule) IResult[bool] {
+func (sf *kMonolit) Add(module mKt.IKernelModule) mKt.IResult[bool] {
 	sf.kCtx.RLock()
 	defer sf.kCtx.RUnlock()
 	if module == nil {
-		return NewErr[bool](fmt.Errorf("kMonolit.Add(): module==nil"))
+		return mL1.NewErr[bool](fmt.Errorf("kMonolit.Add(): module==nil"))
 	}
 	_, isOk := sf.dict[module.Name()]
 	if isOk {
 		err := fmt.Errorf("kMonolit.Add(): module(%v) already exists", module.Name())
-		return NewErr[bool](err)
+		return mL1.NewErr[bool](err)
 	}
 	sf.dict[module.Name()] = module
 	sf.log.Debug("kMonolit.Add(): module='%v'", module.Name())
@@ -117,9 +115,9 @@ func (sf *kMonolit) Add(module IKernelModule) IResult[bool] {
 	resSet := sf.lCtx.Set(key, module, "kMonolit.Add(): module="+moduleName)
 	if resSet.IsErr() {
 		err := fmt.Errorf("kMonolit.Add(): in set module(%v) to kernel ctx, err=\n\t%w", moduleName, resSet.Err())
-		return NewErr[bool](err)
+		return mL1.NewErr[bool](err)
 	}
-	return NewRes(true)
+	return mL1.NewRes(true)
 }
 
 // Run -- запускает монолит в работу.

+ 20 - 23
v4/lev2/kserv_http/kserv_http.go

@@ -16,11 +16,8 @@ import (
 	"github.com/gofiber/fiber/v2/middleware/monitor"
 
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/local_ctx"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/log_buf"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/result"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/safe_bool"
+	mKt "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
+	mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx"
 )
 
@@ -30,13 +27,13 @@ const (
 
 // kServHttp -- встроенный HTTP-сервер.
 type kServHttp struct {
-	kCtx     IKernelCtx
-	lCtx     ILocalCtx
-	log      ILogBuf
+	kCtx     mKt.IKernelCtx
+	lCtx     mKt.ILocalCtx
+	log      mKt.ILogBuf
 	strUrl   string // URL, на котором слушает HTTP-сервер
 	fiberApp *fiber.App
-	isWork   ISafeBool
-	isEnd    ISafeBool
+	isWork   mKt.ISafeBool
+	isEnd    mKt.ISafeBool
 }
 
 //go:embed static/*
@@ -49,8 +46,8 @@ var (
 	hassert      = helpers.Hassert
 )
 
-func getParams() (string, ILogBuf, IKernelCtx) {
-	log := log_buf.NewLogBuf(log_buf.OptIsTerm(true), log_buf.OptPrefix("kServHttp"))
+func getParams() (string, mKt.ILogBuf, mKt.IKernelCtx) {
+	log := mL1.NewLogBuf(mL1.OptIsTerm(true), mL1.OptPrefix("kServHttp"))
 	log.Debug("GetKernelServHttp(): first run")
 	strLocalUrl := os.Getenv("LOCAL_HTTP_URL")
 	hassert(strLocalUrl != "", "getParams(): env LOCAL_HTTP_URL not set")
@@ -61,19 +58,19 @@ func getParams() (string, ILogBuf, IKernelCtx) {
 }
 
 // GetKernelServHttp -- возвращает  встроенный HTTP-сервер.
-func GetKernelServHttp() IResult[IKernelServerHttp] {
+func GetKernelServHttp() mKt.IResult[mKt.IKernelServerHttp] {
 	block.Lock()
 	defer block.Unlock()
 	if kernServHttp != nil {
 		kernServHttp.log.Debug("GetKernelServHttp()")
-		return NewRes(IKernelServerHttp(kernServHttp))
+		return mL1.NewRes(mKt.IKernelServerHttp(kernServHttp))
 	}
 	strLocalUrl, log, kCtx := getParams()
 
 	optMonolit := kCtx.Get("monolitName")
 	if optMonolit.IsNone() {
 		err := fmt.Errorf("GetKernelServHttp(): not have monolit name from kCtx")
-		return NewErr[IKernelServerHttp](err)
+		return mL1.NewErr[mKt.IKernelServerHttp](err)
 	}
 	strMonolit := optMonolit.Val().Val().(string)
 	confFiber := fiber.Config{
@@ -85,10 +82,10 @@ func GetKernelServHttp() IResult[IKernelServerHttp] {
 		Network:           "tcp4",
 		EnablePrintRoutes: true,
 	}
-	resLocCtx := local_ctx.NewLocalCtx(kCtx.Ctx())
+	resLocCtx := mL1.NewLocalCtx(kCtx.Ctx())
 	if resLocCtx.IsErr() {
 		err := fmt.Errorf("GetKernelServHttp(): in get LocalCtx, err=\n\t%w", resLocCtx.Err())
-		return NewErr[IKernelServerHttp](err)
+		return mL1.NewErr[mKt.IKernelServerHttp](err)
 	}
 	sf := &kServHttp{
 		kCtx:     kCtx,
@@ -96,8 +93,8 @@ func GetKernelServHttp() IResult[IKernelServerHttp] {
 		lCtx:     resLocCtx.Val(),
 		strUrl:   strLocalUrl,
 		fiberApp: fiber.New(confFiber),
-		isWork:   safe_bool.NewSafeBool(),
-		isEnd:    safe_bool.NewSafeBool(),
+		isWork:   mL1.NewSafeBool(),
+		isEnd:    mL1.NewSafeBool(),
 	}
 	sf.fiberApp.Use(compress.New(compress.Config{
 		Level: compress.LevelBestCompression, // 2
@@ -114,15 +111,15 @@ func GetKernelServHttp() IResult[IKernelServerHttp] {
 	resSet := kCtx.Set("fiberApp", sf.fiberApp, "GetKernelServHttp() internal fiber app")
 	if resSet.IsErr() {
 		err := fmt.Errorf("GetKernelServHttp(): in set fiber app, err=\n\t%w", resSet.Err())
-		return NewErr[IKernelServerHttp](err)
+		return mL1.NewErr[mKt.IKernelServerHttp](err)
 	}
 	kernServHttp = sf
 	resSet = kCtx.Set("kServHttp", kernServHttp, "kServHttp")
 	if resSet.IsErr() {
 		err := fmt.Errorf("GetKernelServHttp(): in set kernServHttp, err=\n\t%w", resSet.Err())
-		return NewErr[IKernelServerHttp](err)
+		return mL1.NewErr[mKt.IKernelServerHttp](err)
 	}
-	return NewRes(IKernelServerHttp(kernServHttp))
+	return mL1.NewRes(mKt.IKernelServerHttp(kernServHttp))
 }
 
 // IsWork -- возвращает признак работы.
@@ -131,7 +128,7 @@ func (sf *kServHttp) IsWork() bool {
 }
 
 // Log -- возвращает локальный лог.
-func (sf *kServHttp) Log() ILogBuf {
+func (sf *kServHttp) Log() mKt.ILogBuf {
 	return sf.log
 }
 

+ 10 - 10
v4/lev2/kserv_http_std/kserv_http_std.go

@@ -7,15 +7,15 @@ import (
 	"sync"
 	"time"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
+	mKt "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
+	mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx"
 )
 
 // kServHttpStd -- реализация HTTP-сервера на стандартной библиотеке.
 type kServHttpStd struct {
-	kCtx   IKernelCtx
-	log    ILogBuf
+	kCtx   mKt.IKernelCtx
+	log    mKt.ILogBuf
 	port   int
 	server *http.Server
 }
@@ -26,20 +26,20 @@ var (
 )
 
 // GetKservHttpStd -- возвращает HTTP-сервер на стандартной библиотеке.
-func GetKservHttpStd() IResult[*kServHttpStd] {
+func GetKservHttpStd() mKt.IResult[*kServHttpStd] {
 	mu.Lock()
 	defer mu.Unlock()
 	if kServ != nil {
-		return NewRes(kServ)
+		return mL1.NewRes(kServ)
 	}
-	log := NewLogBuf(OptIsTerm(true), OptPrefix("kServHttpStd"))
+	log := mL1.NewLogBuf(mL1.OptIsTerm(true), mL1.OptPrefix("kServHttpStd"))
 	log.Debug("GetKservHttpStd()")
-	resPort := NewSafeIntGetenv("SERV_HTTP_STD_PORT")
+	resPort := mL1.NewSafeIntGetenv("SERV_HTTP_STD_PORT")
 	resPort.Hassert("in get env SERV_HTTP_STD_PORT")
 	resKernCtx := kctx.GetKernelCtx()
 	if resKernCtx.IsErr() {
 		err := fmt.Errorf("GetKservHttpStd(): in get KernelCtx, err=\n\t%w", resKernCtx.Err())
-		return NewErr[*kServHttpStd](err)
+		return mL1.NewErr[*kServHttpStd](err)
 	}
 	kCtx := resKernCtx.Val()
 	sf := &kServHttpStd{
@@ -48,7 +48,7 @@ func GetKservHttpStd() IResult[*kServHttpStd] {
 		port: resPort.Val().Get(),
 	}
 	kServ = sf
-	return NewRes(sf)
+	return mL1.NewRes(sf)
 }
 
 // Run -- запускает сервер вы работу.

+ 35 - 38
v4/lev2/kstore_kv/kstore_kv.go

@@ -9,12 +9,9 @@ import (
 
 	"github.com/dgraph-io/badger/v4"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/local_ctx"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/log_buf"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/result"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/safe_bool"
+	mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
+	mKt "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
+	mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx"
 )
 
@@ -25,13 +22,13 @@ const (
 // kStoreKv -- локальное хранилище ядра.
 type kStoreKv struct {
 	sync.RWMutex
-	kCtx      IKernelCtx
-	lCtx      ILocalCtx
-	log       ILogBuf
-	wg        IKernelWg
+	kCtx      mKt.IKernelCtx
+	lCtx      mKt.ILocalCtx
+	log       mKt.ILogBuf
+	wg        mKt.IKernelWg
 	storePath string
 	db        *badger.DB
-	isWork    ISafeBool
+	isWork    mKt.ISafeBool
 }
 
 var (
@@ -40,30 +37,30 @@ var (
 )
 
 // GetKernelStore -- возвращает новое локальное хранилище ядра.
-func GetKernelStore() IResult[*kStoreKv] {
+func GetKernelStore() mKt.IResult[*kStoreKv] {
 	block.Lock()
 	defer block.Unlock()
 	if kernStore != nil {
 		kernStore.log.Debug("GetKernelStore()")
-		return NewRes(kernStore)
+		return mL1.NewRes(kernStore)
 	}
 	resKernCtx := kctx.GetKernelCtx()
 	if resKernCtx.IsErr() {
 		err := fmt.Errorf("GetKernelStore(): in get kernel ctx, err=\n\t%w", resKernCtx.Err())
-		return NewErr[*kStoreKv](err)
+		return mL1.NewErr[*kStoreKv](err)
 	}
 	kCtx := resKernCtx.Val()
-	log := log_buf.NewLogBuf(log_buf.OptIsTerm(true), log_buf.OptPrefix("kStoreKv"))
-	resLocCtx := local_ctx.NewLocalCtx(kCtx.Ctx())
+	log := mL1.NewLogBuf(mL1.OptIsTerm(true), mL1.OptPrefix("kStoreKv"))
+	resLocCtx := mL1.NewLocalCtx(kCtx.Ctx())
 	if resLocCtx.IsErr() {
 		err := fmt.Errorf("GetKernelStore(): in get local ctx, err=\n\t%w", resLocCtx.Err())
-		return NewErr[*kStoreKv](err)
+		return mL1.NewErr[*kStoreKv](err)
 	}
 	sf := &kStoreKv{
 		kCtx:   kCtx,
 		lCtx:   resLocCtx.Val(),
 		wg:     kCtx.Wg(),
-		isWork: safe_bool.NewSafeBool(),
+		isWork: mL1.NewSafeBool(),
 		log:    log,
 	}
 	sf.open()
@@ -71,18 +68,18 @@ func GetKernelStore() IResult[*kStoreKv] {
 	resSet := kCtx.Set("kernStoreKV", kernStore, "fast KV store on Badger")
 	if resSet.IsErr() {
 		err := fmt.Errorf("GetKernelStore(): in set kernel store KV to kernel ctx, err=\n\t%w", resSet.Err())
-		return NewErr[*kStoreKv](err)
+		return mL1.NewErr[*kStoreKv](err)
 	}
-	return NewRes(kernStore)
+	return mL1.NewRes(kernStore)
 }
 
 // Log -- возвращает локальный лог.
-func (sf *kStoreKv) Log() ILogBuf {
+func (sf *kStoreKv) Log() mKt.ILogBuf {
 	return sf.log
 }
 
 // Set -- устанавливает значение по ключу.
-func (sf *kStoreKv) Set(key string, val []byte) IResult[bool] {
+func (sf *kStoreKv) Set(key string, val []byte) mKt.IResult[bool] {
 	sf.Lock()
 	defer sf.Unlock()
 	sf.log.Debug("Set(): key='%v'", key)
@@ -94,13 +91,13 @@ func (sf *kStoreKv) Set(key string, val []byte) IResult[bool] {
 	if err != nil {
 		err := fmt.Errorf("Set(): key=%v, err=\n\t%w", key, err)
 		sf.log.Err(err.Error())
-		return NewErr[bool](err)
+		return mL1.NewErr[bool](err)
 	}
-	return NewRes(true)
+	return mL1.NewRes(true)
 }
 
 // Get -- возвращает значение по ключу.
-func (sf *kStoreKv) Get(key string) IResult[[]byte] {
+func (sf *kStoreKv) Get(key string) mKt.IResult[[]byte] {
 	sf.RLock()
 	defer sf.RUnlock()
 	sf.log.Debug("Get(): key='%v'", key)
@@ -117,13 +114,13 @@ func (sf *kStoreKv) Get(key string) IResult[[]byte] {
 	if err != nil {
 		err := fmt.Errorf("Get(): key=%v, err=\n\t%v", key, err)
 		sf.log.Err(err.Error())
-		return NewErr[[]byte](err)
+		return mL1.NewErr[[]byte](err)
 	}
-	return NewRes(binVal)
+	return mL1.NewRes(binVal)
 }
 
 // ByPrefix -- фильтрует ключи по префиксу.
-func (sf *kStoreKv) ByPrefix(prefix string) IResult[[]string] {
+func (sf *kStoreKv) ByPrefix(prefix string) mKt.IResult[[]string] {
 	var (
 		binKey []byte
 		lstKey = []string{}
@@ -150,13 +147,13 @@ func (sf *kStoreKv) ByPrefix(prefix string) IResult[[]string] {
 	err := sf.db.View(fnPrefix)
 	if err != nil {
 		err := fmt.Errorf("ByPrefix(): in find, err=\n\t%w", err)
-		return NewErr[[]string](err)
+		return mL1.NewErr[[]string](err)
 	}
-	return NewRes(lstKey)
+	return mL1.NewRes(lstKey)
 }
 
 // Delete -- удалить ключ из хранилища.
-func (sf *kStoreKv) Delete(key string) IResult[bool] {
+func (sf *kStoreKv) Delete(key string) mKt.IResult[bool] {
 	sf.Lock()
 	defer sf.Unlock()
 	sf.log.Debug("Delete(): key='%v'", key)
@@ -168,9 +165,9 @@ func (sf *kStoreKv) Delete(key string) IResult[bool] {
 	if err != nil {
 		err := fmt.Errorf("Delete(): key=%v, err=\n\t%w", key, err)
 		sf.log.Err(err.Error())
-		return NewErr[bool](err)
+		return mL1.NewErr[bool](err)
 	}
-	return NewRes(true)
+	return mL1.NewRes(true)
 }
 
 // Открывает базу при создании.
@@ -179,14 +176,14 @@ func (sf *kStoreKv) open() {
 	defer sf.Unlock()
 	sf.log.Debug("open()")
 	strPath := os.Getenv("LOCAL_STORE_PATH")
-	Hassert(strPath != "", "open(): env LOCAL_STORE_PATH not set")
+	mKh.Hassert(strPath != "", "open(): env LOCAL_STORE_PATH not set")
 	pwd, err := os.Getwd()
-	Hassert(err == nil, "open(): in get PWD, err=\n\t%v", err)
+	mKh.Hassert(err == nil, "open(): in get PWD, err=\n\t%v", err)
 	sf.storePath = pwd + strPath + "/db_local"
 	err = os.MkdirAll(sf.storePath, 0750)
-	Hassert(err == nil, "open(): in make dir %v, err=\n\t%v", sf.storePath, err)
+	mKh.Hassert(err == nil, "open(): in make dir %v, err=\n\t%v", sf.storePath, err)
 	sf.db, err = badger.Open(badger.DefaultOptions(sf.storePath))
-	Hassert(err == nil, "open(): in open DB %v, err=\n\t%v", sf.storePath, err)
+	mKh.Hassert(err == nil, "open(): in open DB %v, err=\n\t%v", sf.storePath, err)
 	res := sf.wg.Add(storeStreamName)
 	res.Hassert("open(): in add name stream to IKernelWg")
 	sf.isWork.Set()
@@ -239,7 +236,7 @@ func (sf *kStoreKv) close() {
 	<-chWait
 	sf.isWork.Reset()
 	err := sf.db.Close()
-	Assert(err == nil, "kStoreKv.close(): in close DB, err=\n\t%v", err)
+	mKh.Assert(err == nil, "kStoreKv.close(): in close DB, err=\n\t%v", err)
 	sf.wg.Done(storeStreamName)
 	sf.log.Debug("close(): done")
 }

+ 11 - 12
v4/lev2/kstore_kv_std/kv_bucket_base/dict_rec/dict_rec.go

@@ -6,46 +6,45 @@ import (
 	"sync"
 
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/option"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/result"
+	mKt "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
+	mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
 )
 
 // DictRec -- потокобезопасный словарь KV-бакета.
 type DictRec struct {
-	dict  map[kalias.AKey]IRecKv
+	dict  map[kalias.AKey]mKt.IRecKv
 	block sync.RWMutex
 }
 
 // NewDictRec -- создание нового потокобезопасного словаря KV.
 func NewDictRec() *DictRec {
 	sf := &DictRec{
-		dict: map[kalias.AKey]IRecKv{},
+		dict: map[kalias.AKey]mKt.IRecKv{},
 	}
-	_ = IDictRec(sf)
+	_ = mKt.IDictRec(sf)
 	return sf
 }
 
 // Get -- получение значения по ключу.
-func (sf *DictRec) Get(key kalias.AKey) IOption[IRecKv] {
+func (sf *DictRec) Get(key kalias.AKey) mKt.IOption[mKt.IRecKv] {
 	sf.block.RLock()
 	defer sf.block.RUnlock()
 	rec, isOk := sf.dict[key]
 	if !isOk {
-		return NewNone[IRecKv]()
+		return mL1.NewNone[mKt.IRecKv]()
 	}
-	return NewOpt(rec)
+	return mL1.NewOpt(rec)
 }
 
 // Set -- установка значения по ключу.
-func (sf *DictRec) Set(rec IRecKv) IResult[bool] {
+func (sf *DictRec) Set(rec mKt.IRecKv) mKt.IResult[bool] {
 	if rec == nil {
-		return NewErr[bool](fmt.Errorf("DictRec.Set(): rec is nil"))
+		return mL1.NewErr[bool](fmt.Errorf("DictRec.Set(): rec is nil"))
 	}
 	sf.block.Lock()
 	defer sf.block.Unlock()
 	sf.dict[rec.Meta().Key()] = rec
-	return NewRes(true)
+	return mL1.NewRes(true)
 }
 
 // Del -- удаление значения по ключу.

+ 23 - 25
v4/lev2/kwg/kwg.go

@@ -8,21 +8,19 @@ import (
 	"fmt"
 	"sync"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/log_buf"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/result"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/safe_bool"
+	mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
+	mKa "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
+	mKt "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
+	mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
 )
 
 // kernelWg -- именованный ожидатель потоков ядра.
 type kernelWg struct {
 	sync.RWMutex
 	ctx        context.Context
-	dictStream map[AStreamName]bool // Словарь имён потоков с признаком работы
-	isWork     ISafeBool
-	log        ILogBuf
+	dictStream map[mKa.AStreamName]bool // Словарь имён потоков с признаком работы
+	isWork     mKt.ISafeBool
+	log        mKt.ILogBuf
 }
 
 var (
@@ -31,19 +29,19 @@ var (
 )
 
 // GetKernelWg -- возвращает новый именованный ожидатель потоков ядра.
-func GetKernelWg(ctx context.Context) IKernelWg {
+func GetKernelWg(ctx context.Context) mKt.IKernelWg {
 	block.Lock()
 	defer block.Unlock()
 	if kernWg != nil {
 		kernWg.log.Debug("GetKernelWg()")
 		return kernWg
 	}
-	Hassert(ctx != nil, "GetKernelWg(): ctx==nil")
+	mKh.Hassert(ctx != nil, "GetKernelWg(): ctx==nil")
 	sf := &kernelWg{
 		ctx:        ctx,
-		dictStream: map[AStreamName]bool{},
-		isWork:     safe_bool.NewSafeBool(),
-		log:        log_buf.NewLogBuf(log_buf.OptIsTerm(true), log_buf.OptPrefix("kernelWg")),
+		dictStream: map[mKa.AStreamName]bool{},
+		isWork:     mL1.NewSafeBool(),
+		log:        mL1.NewLogBuf(mL1.OptIsTerm(true), mL1.OptPrefix("kernelWg")),
 	}
 	sf.log.Debug("GetKernelWg(): run")
 	go sf.close()
@@ -53,7 +51,7 @@ func GetKernelWg(ctx context.Context) IKernelWg {
 }
 
 // Log -- возвращает лог ожидателя потоков.
-func (sf *kernelWg) Log() ILogBuf {
+func (sf *kernelWg) Log() mKt.ILogBuf {
 	return sf.log
 }
 
@@ -70,10 +68,10 @@ func (sf *kernelWg) IsWork() bool {
 }
 
 // List -- возвращает список имён потоков на ожидании.
-func (sf *kernelWg) List() []AStreamName {
+func (sf *kernelWg) List() []mKa.AStreamName {
 	sf.RLock()
 	defer sf.RUnlock()
-	lst := make([]AStreamName, 0, len(sf.dictStream))
+	lst := make([]mKa.AStreamName, 0, len(sf.dictStream))
 	for name := range sf.dictStream {
 		lst = append(lst, name)
 	}
@@ -81,7 +79,7 @@ func (sf *kernelWg) List() []AStreamName {
 }
 
 // Done -- удаляет поток из ожидания.
-func (sf *kernelWg) Done(name AStreamName) {
+func (sf *kernelWg) Done(name mKa.AStreamName) {
 	sf.Lock()
 	defer sf.Unlock()
 	delete(sf.dictStream, name)
@@ -91,7 +89,7 @@ func (sf *kernelWg) Done(name AStreamName) {
 // Wait -- блокирующий вызов; возвращает управление, только когда все потоки завершили работу.
 func (sf *kernelWg) Wait() {
 	for {
-		SleepMs()
+		mKh.SleepMs()
 		if !sf.isWork.Get() {
 			break
 		}
@@ -100,19 +98,19 @@ func (sf *kernelWg) Wait() {
 }
 
 // Add -- добавляет поток в ожидание.
-func (sf *kernelWg) Add(name AStreamName) IResult[bool] {
+func (sf *kernelWg) Add(name mKa.AStreamName) mKt.IResult[bool] {
 	sf.Lock()
 	defer sf.Unlock()
 	sf.log.Debug("Add(): stream='%v'", name)
 	if !sf.isWork.Get() {
 		err := fmt.Errorf("Add(): stream=%v, work end", name)
-		return NewErr[bool](err)
+		return mL1.NewErr[bool](err)
 	}
-	Hassert(name != "", "Add(): name stream is empty")
+	mKh.Hassert(name != "", "Add(): name stream is empty")
 	_, isOk := sf.dictStream[name]
-	Hassert(!isOk, "Add(): stream '%v' already exists", name)
+	mKh.Hassert(!isOk, "Add(): stream '%v' already exists", name)
 	sf.dictStream[name] = true
-	return NewRes(true)
+	return mL1.NewRes(true)
 }
 
 // Ожидает окончания работы ожидателя групп.
@@ -124,7 +122,7 @@ func (sf *kernelWg) close() {
 		return len(sf.dictStream) == 0
 	}
 	for {
-		SleepMs()
+		mKh.SleepMs()
 		if fnDone() {
 			break
 		}

+ 11 - 11
v4/lev2/log_topic/log_topic.go

@@ -4,40 +4,40 @@ package log_topic
 import (
 	"fmt"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/result"
+	mKa "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
+	mKt "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
+	mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
 )
 
 // LogTopic -- элемент лога шины.
 type LogTopic struct {
-	topic  ATopic     // Топик, куда публиковать лог
-	client IBusClient // С помощью чего публиковать лог
+	topic  mKa.ATopic     // Топик, куда публиковать лог
+	client mKt.IBusClient // С помощью чего публиковать лог
 }
 
 // NewLogTopic -- возвращает новый элемент лога.
-func NewLogTopic(topic ATopic, client IBusClient) IResult[*LogTopic] {
+func NewLogTopic(topic mKa.ATopic, client mKt.IBusClient) mKt.IResult[*LogTopic] {
 	if topic == "" {
 		err := fmt.Errorf("NewLogTopic(): topic is empty")
-		return NewErr[*LogTopic](err)
+		return mL1.NewErr[*LogTopic](err)
 	}
 	if client == nil {
 		err := fmt.Errorf("NewLogTopic(): IBusClient==nil")
-		return NewErr[*LogTopic](err)
+		return mL1.NewErr[*LogTopic](err)
 	}
 	sf := &LogTopic{
 		topic:  topic,
 		client: client,
 	}
-	return NewRes(sf)
+	return mL1.NewRes(sf)
 }
 
 // Pub -- публикует сообщение в топик.
-func (sf *LogTopic) Pub(binMsg []byte) IResult[bool] {
+func (sf *LogTopic) Pub(binMsg []byte) mKt.IResult[bool] {
 	res := sf.client.Publish(sf.topic, binMsg)
 	if res.IsErr() {
 		err := fmt.Errorf("LogTopic.Pub(): in pub with client, err=\n\t%v", res.Err())
-		return NewErr[bool](err)
+		return mL1.NewErr[bool](err)
 	}
 	return res
 }

+ 18 - 18
v4/lev2/mock_hand_serve/mock_hand_serve.go

@@ -5,53 +5,53 @@ import (
 	"fmt"
 	"sync"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/result"
+	mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
+	mKa "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
+	mKt "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
+	mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/safe_bool"
 )
 
 // MockHandlerServe -- мок-обработчик входящих запросов.
 type MockHandlerServe struct {
-	IsBad_ ISafeBool    // Признак сбоя при вызове
-	Msg_   []byte       // Для обратного вызова
-	Name_  AHandlerName // Уникальное имя мок-обработчика подписки
-	Topic_ ATopic       // Имя топика подписки
+	IsBad_ mKt.ISafeBool    // Признак сбоя при вызове
+	Msg_   []byte           // Для обратного вызова
+	Name_  mKa.AHandlerName // Уникальное имя мок-обработчика подписки
+	Topic_ mKa.ATopic       // Имя топика подписки
 	block  sync.Mutex
 }
 
 // NewMockHandlerServe -- возвращает новый обработчик подписки.
-func NewMockHandlerServe(topic ATopic, name string) *MockHandlerServe {
-	Hassert(topic != "", "NewMockHandlerServe(): topic is empty")
-	Hassert(name != "", "NewMockHandlerServe(): name is empty")
+func NewMockHandlerServe(topic mKa.ATopic, name string) *MockHandlerServe {
+	mKh.Hassert(topic != "", "NewMockHandlerServe(): topic is empty")
+	mKh.Hassert(name != "", "NewMockHandlerServe(): name is empty")
 	sf := &MockHandlerServe{
 		Topic_: topic,
-		Name_:  AHandlerName(name),
+		Name_:  mKa.AHandlerName(name),
 		IsBad_: safe_bool.NewSafeBool(),
 	}
-	_ = IBusHandlerServe(sf)
+	_ = mKt.IBusHandlerServe(sf)
 	return sf
 }
 
 // Функция обратного вызова подписки.
-func (sf *MockHandlerServe) FnBack(binMsg []byte) IResult[[]byte] {
+func (sf *MockHandlerServe) FnBack(binMsg []byte) mKt.IResult[[]byte] {
 	sf.block.Lock()
 	defer sf.block.Unlock()
 	if sf.IsBad_.Get() {
 		err := fmt.Errorf("FnBack(): isBad==true")
-		return NewErr[[]byte](err)
+		return mL1.NewErr[[]byte](err)
 	}
 	sf.Msg_ = binMsg
-	return NewRes(binMsg)
+	return mL1.NewRes(binMsg)
 }
 
 // Возвращает уникальное имя обработчика подписки.
-func (sf *MockHandlerServe) Topic() ATopic {
+func (sf *MockHandlerServe) Topic() mKa.ATopic {
 	return sf.Topic_
 }
 
 // Возвращает топик для обработчика подписки.
-func (sf *MockHandlerServe) Name() AHandlerName {
+func (sf *MockHandlerServe) Name() mKa.AHandlerName {
 	return sf.Name_
 }

+ 15 - 15
v4/lev2/mock_hand_sub_http/mock_hand_sub_http.go

@@ -6,47 +6,47 @@ import (
 	"log"
 	"sync"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
+	mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
+	mKa "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
+	mKt "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
 )
 
 // MockHandSubHttp -- обработчик подписки по HTTP.
 type MockHandSubHttp struct {
-	Name_    AHandlerName // Уникальное имя обработчика
-	Topic_   ATopic       // Имя топика, на который подписан обработчик
-	WebHook_ string       // Куда обращаться при запросах
-	BinMsg_  []byte       // Последнее бинарное сообщение
+	Name_    mKa.AHandlerName // Уникальное имя обработчика
+	Topic_   mKa.ATopic       // Имя топика, на который подписан обработчик
+	WebHook_ string           // Куда обращаться при запросах
+	BinMsg_  []byte           // Последнее бинарное сообщение
 	block    sync.RWMutex
 }
 
 // NewMockHandSubHttp -- возвращает новый обработчик подписки по HTTP.
-func NewMockHandSubHttp(topic ATopic, webHook string) IBusHandlerSubscribe {
-	Hassert(topic != "", "NewHandlerHttpSub(): topic is empty")
-	Hassert(webHook != "", "NewHandlerHttpSub(): webHook is empty")
+func NewMockHandSubHttp(topic mKa.ATopic, webHook string) mKt.IBusHandlerSubscribe {
+	mKh.Hassert(topic != "", "NewHandlerHttpSub(): topic is empty")
+	mKh.Hassert(webHook != "", "NewHandlerHttpSub(): webHook is empty")
 	sf := &MockHandSubHttp{
 		Topic_:   topic,
-		Name_:    AHandlerName(webHook + "_" + rand.Text()),
+		Name_:    mKa.AHandlerName(webHook + "_" + rand.Text()),
 		WebHook_: webHook,
 	}
 	return sf
 }
 
 // Topic -- возвращает имя топика, на который подписан обработчик.
-func (sf *MockHandSubHttp) Topic() ATopic {
+func (sf *MockHandSubHttp) Topic() mKa.ATopic {
 	return sf.Topic_
 }
 
 // SetName -- устанавливает имя обработчика.
-func (sf *MockHandSubHttp) SetName(name AHandlerName) {
+func (sf *MockHandSubHttp) SetName(name mKa.AHandlerName) {
 	sf.block.Lock()
 	defer sf.block.Unlock()
-	Hassert(name != "", "HandlerHttpSub.SetName(): name is empty")
+	mKh.Hassert(name != "", "HandlerHttpSub.SetName(): name is empty")
 	sf.Name_ = name
 }
 
 // Name -- возвращает уникальное имя обработчика.
-func (sf *MockHandSubHttp) Name() AHandlerName {
+func (sf *MockHandSubHttp) Name() mKa.AHandlerName {
 	sf.block.RLock()
 	defer sf.block.RUnlock()
 	return sf.Name_

+ 13 - 13
v4/lev2/mock_hand_sub_local/mock_hand_sub.go

@@ -5,27 +5,27 @@ import (
 	"crypto/rand"
 	"sync"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
+	mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
+	mKa "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
+	mKt "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
 )
 
 type MockHandlerSub struct {
-	Msg_   []byte       // Для обратного вызова
-	Name_  AHandlerName // Уникальное имя мок-обработчика подписки
-	Topic_ ATopic       // Имя топика подписки
+	Msg_   []byte           // Для обратного вызова
+	Name_  mKa.AHandlerName // Уникальное имя мок-обработчика подписки
+	Topic_ mKa.ATopic       // Имя топика подписки
 	block  sync.RWMutex
 }
 
 // NewMockHandlerSub -- возвращает новый обработчик подписки.
-func NewMockHandlerSub(topic ATopic, localHook string) *MockHandlerSub {
-	Hassert(topic != "", "NewMockHandlerSub(): topic is empty")
-	Hassert(localHook != "", "NewMockHandlerSub(): name is empty")
+func NewMockHandlerSub(topic mKa.ATopic, localHook string) *MockHandlerSub {
+	mKh.Hassert(topic != "", "NewMockHandlerSub(): topic is empty")
+	mKh.Hassert(localHook != "", "NewMockHandlerSub(): name is empty")
 	sf := &MockHandlerSub{
 		Topic_: topic,
-		Name_:  AHandlerName(localHook + "_" + rand.Text()),
+		Name_:  mKa.AHandlerName(localHook + "_" + rand.Text()),
 	}
-	_ = IBusHandlerSubscribe(sf)
+	_ = mKt.IBusHandlerSubscribe(sf)
 	return sf
 }
 
@@ -44,11 +44,11 @@ func (sf *MockHandlerSub) FnBack(binMsg []byte) {
 }
 
 // Возвращает уникальное имя обработчика подписки.
-func (sf *MockHandlerSub) Topic() ATopic {
+func (sf *MockHandlerSub) Topic() mKa.ATopic {
 	return sf.Topic_
 }
 
 // Возвращает топик для обработчика подписки.
-func (sf *MockHandlerSub) Name() AHandlerName {
+func (sf *MockHandlerSub) Name() mKa.AHandlerName {
 	return sf.Name_
 }

+ 2 - 2
v4/lev2/wui/hx_swap/hx_swap.go

@@ -4,7 +4,7 @@ package hx_swap
 import (
 	"sync"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_types"
+	mWt "gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_types"
 )
 
 // HxSwap -- атрибут HTMX (политика замены).
@@ -16,7 +16,7 @@ type HxSwap struct {
 // NewHxSwap -- возвращает новую политику замены.
 func NewHxSwap() *HxSwap {
 	sf := &HxSwap{}
-	_ = IHxSwap(sf)
+	_ = mWt.IHxSwap(sf)
 	return sf
 }
 

+ 2 - 2
v4/lev2/wui/hx_swap_oob/hx_swap_oob.go

@@ -4,7 +4,7 @@ package hx_swap_oob
 import (
 	"sync"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_types"
+	mWt "gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_types"
 )
 
 // HxSwapOob -- объект внеполосной подкачки.
@@ -16,7 +16,7 @@ type HxSwapOob struct {
 // NewHxSwapOob -- возвращает новую внеполосную подкачку.
 func NewHxSwapOob() *HxSwapOob {
 	sf := &HxSwapOob{}
-	_ = IHxSwapOob(sf)
+	_ = mWt.IHxSwapOob(sf)
 	return sf
 }
 

+ 2 - 2
v4/lev2/wui/hx_target/hx_target.go

@@ -4,7 +4,7 @@ package hx_target
 import (
 	"sync"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_types"
+	mWt "gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_types"
 )
 
 // HxSwap -- атрибут HTMX (цель замены).
@@ -16,7 +16,7 @@ type HxSwap struct {
 // NewHxTarget -- возвращает новую цель замены.
 func NewHxTarget() *HxSwap {
 	sf := &HxSwap{}
-	_ = IHxTarget(sf)
+	_ = mWt.IHxTarget(sf)
 
 	return sf
 }

+ 2 - 2
v4/lev2/wui/hx_trigger/hx_trigger.go

@@ -4,7 +4,7 @@ package hx_trigger
 import (
 	"sync"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_types"
+	mWt "gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_types"
 )
 
 // HxTrigger -- атрибут HTMX (триггер запроса).
@@ -16,7 +16,7 @@ type HxTrigger struct {
 // NewHxTrigger -- возвращает новый триггер запроса.
 func NewHxTrigger() *HxTrigger {
 	sf := &HxTrigger{}
-	_ = IHxSwap(sf)
+	_ = mWt.IHxSwap(sf)
 
 	return sf
 }

+ 6 - 6
v4/lev2/wui/hx_url/hx_url.go

@@ -4,13 +4,13 @@ package hx_url
 import (
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/hx_url_method"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/hx_url_patch"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_types"
+	mWt "gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_types"
 )
 
 // HxUrl -- атрибут HTMX (URL запроса).
 type HxUrl struct {
-	method IHxUrlMethod
-	patch  IHxUrlPatch
+	method mWt.IHxUrlMethod
+	patch  mWt.IHxUrlPatch
 }
 
 // NewHxUrl -- возвращает новый URL запроса.
@@ -19,7 +19,7 @@ func NewHxUrl(patch string) *HxUrl {
 		method: hx_url_method.NewHxUrlMethod(),
 		patch:  hx_url_patch.NewHxUrlPatch(patch),
 	}
-	_ = IHxUrl(sf)
+	_ = mWt.IHxUrl(sf)
 	return sf
 }
 
@@ -29,11 +29,11 @@ func (sf *HxUrl) String() string {
 }
 
 // Method -- возвращает метод запроса.
-func (sf *HxUrl) Method() IHxUrlMethod {
+func (sf *HxUrl) Method() mWt.IHxUrlMethod {
 	return sf.method
 }
 
 // Patch -- возвращает путь запроса.
-func (sf *HxUrl) Patch() IHxUrlPatch {
+func (sf *HxUrl) Patch() mWt.IHxUrlPatch {
 	return sf.patch
 }

+ 2 - 2
v4/lev2/wui/hx_url_method/hx_url_method.go

@@ -4,7 +4,7 @@ package hx_url_method
 import (
 	"sync"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_types"
+	mWt "gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_types"
 )
 
 // HxSwap -- атрибут HTMX (метод запроса).
@@ -18,7 +18,7 @@ func NewHxUrlMethod() *HxSwap {
 	sf := &HxSwap{
 		val: "hx-post",
 	}
-	_ = IHxUrlMethod(sf)
+	_ = mWt.IHxUrlMethod(sf)
 	return sf
 }
 

+ 4 - 4
v4/lev2/wui/hx_url_patch/hx_url_patch.go

@@ -4,8 +4,8 @@ package hx_url_patch
 import (
 	"sync"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_types"
+	mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
+	mWt "gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_types"
 )
 
 // HxUrlPatch -- атрибут HTMX (путь запроса).
@@ -16,11 +16,11 @@ type HxUrlPatch struct {
 
 // NewHxUrlPatch -- возвращает новый путь запроса.
 func NewHxUrlPatch(patch string) *HxUrlPatch {
-	Hassert(patch != "", "NewHxUrlPatch(): patch isempty")
+	mKh.Hassert(patch != "", "NewHxUrlPatch(): patch isempty")
 	sf := &HxUrlPatch{
 		val: patch,
 	}
-	_ = IHxUrlMethod(sf)
+	_ = mWt.IHxUrlMethod(sf)
 	return sf
 }
 

+ 4 - 4
v4/lev2/wui/hx_vals/hx_vals.go

@@ -5,8 +5,8 @@ import (
 	"encoding/json"
 	"sync"
 
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_types"
+	mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
+	mWt "gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_types"
 )
 
 // HxVals -- атрибут HTMX (словарь значений).
@@ -20,7 +20,7 @@ func NewHxVals() *HxVals {
 	sf := &HxVals{
 		dict: map[string]any{},
 	}
-	_ = IHxVals(sf)
+	_ = mWt.IHxVals(sf)
 	return sf
 }
 
@@ -64,6 +64,6 @@ func (sf *HxVals) Get(key string) any {
 func (sf *HxVals) Set(key string, val any) {
 	sf.Lock()
 	defer sf.Unlock()
-	Hassert(key != "", "HxVals.Set(): key is empty")
+	mKh.Hassert(key != "", "HxVals.Set(): key is empty")
 	sf.dict[key] = val
 }

+ 7 - 7
v4/lev2/wui/wui_button/wui_button.go

@@ -10,16 +10,16 @@ import (
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_ctx"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_hx"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_text"
-	. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_types"
+	mWt "gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_types"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_widget"
 )
 
 // WuiButton -- WUI-кнопка.
 type WuiButton struct {
-	IWuiWidget
-	text   IWuiText
+	mWt.IWuiWidget
+	text   mWt.IWuiText
 	fnBack func(map[string]string) mKt.IResult[string]
-	hx     IWuiHx
+	hx     mWt.IWuiHx
 }
 
 // FnBtnBack -- функция обратного вызова для кнопки.
@@ -47,17 +47,17 @@ func NewWuiButton(text string, fnBack FnBtnBack) mKt.IResult[*WuiButton] {
 		err := fmt.Errorf("NewWuiButton(): text=%q, err=\n\t%w", text, resSet.Err())
 		return mL1.NewErr[*WuiButton](err)
 	}
-	_ = IWuiButton(sf)
+	_ = mWt.IWuiButton(sf)
 	return mL1.NewRes(sf)
 }
 
 // Hx -- возвращает атрибуты HTMX.
-func (sf *WuiButton) Hx() IWuiHx {
+func (sf *WuiButton) Hx() mWt.IWuiHx {
 	return sf.hx
 }
 
 // Text -- возвращает текст кнопки.
-func (sf *WuiButton) Text() IWuiText {
+func (sf *WuiButton) Text() mWt.IWuiText {
 	return sf.text
 }