Browse Source

SVI Рабочее сохранение

SVI 2 months ago
parent
commit
f3bf393cbd

+ 2 - 13
v4/lev1/comp_spec/ilocal_ctx.go

@@ -4,22 +4,11 @@ import (
 	"context"
 
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/local_ctx/ctx_value"
 )
 
 // ICtxValue -- интерфейс к значению локального контекста.
-type ICtxValue interface {
-	core_spec.IRWMutex
-	// Key -- возвращает ключ значения
-	Key() string
-	// Val -- возвращает хранимое значение
-	Val() any
-	// CreateAt -- возвращает метку времени создания
-	CreateAt() core_spec.ITime
-	// UpdateAt -- возвращает метку времени обновления
-	UpdateAt() core_spec.ITimeMut
-	// Comment -- возвращает комментарий значения
-	Comment() string
-}
+type ICtxValue = ctx_value.ICtxValue
 
 // ILocalCtx -- локальный контекст.
 type ILocalCtx interface {

+ 17 - 2
v4/lev1/local_ctx/ctx_value/ctx_value.go

@@ -5,11 +5,26 @@ import (
 	"sync"
 
 	mL0 "gitp78su.ipnodns.ru/svi/kern/v4/lev0"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
 	mKs "gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/voc/etime"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/comp_spec"
 )
 
+// ICtxValue -- интерфейс к значению локального контекста.
+type ICtxValue interface {
+	core_spec.IRWMutex
+	// Key -- возвращает ключ значения
+	Key() string
+	// Val -- возвращает хранимое значение
+	Val() any
+	// CreateAt -- возвращает метку времени создания
+	CreateAt() core_spec.ITime
+	// UpdateAt -- возвращает метку времени обновления
+	UpdateAt() core_spec.ITimeMut
+	// Comment -- возвращает комментарий значения
+	Comment() string
+}
+
 // CtxValue -- потокобезопасное значение локального контекста.
 type CtxValue struct {
 	sync.RWMutex
@@ -21,7 +36,7 @@ type CtxValue struct {
 }
 
 // NewCtxValue -- возвращает новое потокобезопасное значение локального контекста.
-func NewCtxValue(key string, val any, comment string) comp_spec.ICtxValue {
+func NewCtxValue(key string, val any, comment string) ICtxValue {
 	mL0.Hassert(key != "", "NewCtxValue(): key is empty")
 	sf := &CtxValue{
 		key:       key,

+ 33 - 10
v4/lev1/local_ctx/local_ctx.go

@@ -6,16 +6,39 @@ import (
 	"sync"
 
 	mL0 "gitp78su.ipnodns.ru/svi/kern/v4/lev0"
-	mKs "gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
 
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/voc/etime"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/comp_spec"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/ctx_value"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/local_ctx/ctx_value"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/log_buf"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/comp_spec"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/lst_sort"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/safe_bool"
 )
 
+// ILocalCtx -- локальный контекст.
+type ILocalCtx interface {
+	core_spec.IRWMutex
+	// Get -- извлекает значение из контекста
+	Get(key string) core_spec.IOption[comp_spec.ICtxValue]
+	// Del -- удаляет значение из контекста
+	Del(key string)
+	// Set -- добавляет значение в контекст
+	Set(key string, val any, comment string)
+	// Size -- возвращает размер словаря контекста
+	Size() int
+	// SortedList -- возвращает сортированный список объектов контекста
+	SortedList() []comp_spec.ICtxValue
+	// Cancel -- отменяет контекст
+	Cancel()
+	// Wait -- ожидает отмены контекста
+	Wait()
+	// Log -- возвращает буфер сообщений
+	Log() log_buf.ILogBuf
+	// Ctx -- возвращает хранимый контекст
+	Ctx() context.Context
+}
+
 // LocalCtx -- локальный контекст.
 type LocalCtx struct {
 	sync.RWMutex
@@ -28,7 +51,7 @@ type LocalCtx struct {
 }
 
 // NewLocalCtx -- возвращает новый локальный контекст.
-func NewLocalCtx(ctx context.Context) comp_spec.ILocalCtx {
+func NewLocalCtx(ctx context.Context) ILocalCtx {
 	mL0.Hassert(ctx != nil, "NewLocalCtx(): ctx==nil")
 	_ctx, fnCancel := context.WithCancel(ctx)
 	paramLogBuf := &log_buf.LogBufParam{
@@ -38,7 +61,7 @@ func NewLocalCtx(ctx context.Context) comp_spec.ILocalCtx {
 	sf := &LocalCtx{
 		ctx:      _ctx,
 		fnCancel: fnCancel,
-		dictVal:  map[string]mKs.ICtxValue{},
+		dictVal:  map[string]comp_spec.ICtxValue{},
 		lstSort:  lst_sort.NewLstSort(),
 		log:      log_buf.NewLogBuf(paramLogBuf),
 	}
@@ -58,26 +81,26 @@ func (sf *LocalCtx) Size() int {
 }
 
 // SortedList -- возвращает сортированный список значений.
-func (sf *LocalCtx) SortedList() []mKs.ICtxValue {
+func (sf *LocalCtx) SortedList() []comp_spec.ICtxValue {
 	return sf.lstSort.List()
 }
 
 // Log -- возвращает локальный буферный лог.
-func (sf *LocalCtx) Log() mKs.ILogBuf {
+func (sf *LocalCtx) Log() comp_spec.ILogBuf {
 	return sf.log
 }
 
 // Get -- возвращает хранимое значение.
-func (sf *LocalCtx) Get(key string) mL0.IOption[mKs.ICtxValue] {
+func (sf *LocalCtx) Get(key string) mL0.IOption[comp_spec.ICtxValue] {
 	sf.RLock()
 	defer sf.RUnlock()
 	if key == "" {
-		return mL0.NewNone[mKs.ICtxValue]()
+		return mL0.NewNone[comp_spec.ICtxValue]()
 	}
 	sf.log.Debug("Get(): key='%v'", key)
 	val, isOk := sf.dictVal[key]
 	if !isOk {
-		return mL0.NewNone[mKs.ICtxValue]()
+		return mL0.NewNone[comp_spec.ICtxValue]()
 	}
 	return mL0.NewSome(val)
 }

+ 1 - 2
v4/lev1/log_buf/log_buf_test.go

@@ -4,13 +4,12 @@ import (
 	"testing"
 
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/comp_spec"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/safe_bool"
 )
 
 type tester struct {
 	t   *testing.T
-	log comp_spec.ILogBuf
+	log ILogBuf
 }
 
 func TestLogBuf(t *testing.T) {