|
|
@@ -9,26 +9,27 @@ import (
|
|
|
|
|
|
mL0 "gitp78su.ipnodns.ru/svi/kern/v4/lev0"
|
|
|
"gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
|
|
|
+ "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
|
|
|
"gitp78su.ipnodns.ru/svi/kern/v4/lev0/etypes/ebool"
|
|
|
)
|
|
|
|
|
|
// safeBoolReact -- потокобезопасный булевый признак с реакцией на своё изменение.
|
|
|
type safeBoolReact struct {
|
|
|
sync.RWMutex
|
|
|
- dict map[string]func(core_spec.EBoolMut) // Словарь обратных вызовов
|
|
|
+ dict map[defs.Str]func(core_spec.EBoolMut) // Словарь обратных вызовов
|
|
|
val bool
|
|
|
}
|
|
|
|
|
|
// NewSafeBoolReact -- возвращает новый потокобезопасный булевый признак с реакцией на своё изменение.
|
|
|
func NewSafeBoolReact() core_spec.ISafeBoolReact {
|
|
|
sf := &safeBoolReact{
|
|
|
- dict: map[string]func(core_spec.EBoolMut){},
|
|
|
+ dict: map[defs.Str]func(core_spec.EBoolMut){},
|
|
|
}
|
|
|
return sf
|
|
|
}
|
|
|
|
|
|
// NewSafeBoolReactFromStr -- возвращает новое потокобезопасное булево с реакцией из строки.
|
|
|
-func NewSafeBoolReactFromStr(strVal string) mL0.IResult[core_spec.ISafeBoolReact] {
|
|
|
+func NewSafeBoolReactFromStr(strVal defs.Str) mL0.IResult[core_spec.ISafeBoolReact] {
|
|
|
sf := NewSafeBoolReact()
|
|
|
res := sf.FromStr(strVal)
|
|
|
if res.IsErr() {
|
|
|
@@ -39,7 +40,7 @@ func NewSafeBoolReactFromStr(strVal string) mL0.IResult[core_spec.ISafeBoolReact
|
|
|
}
|
|
|
|
|
|
// NewSafeBoolGetenv -- возвращает новое потокобезопасное целое с реакцией из окружения.
|
|
|
-func NewSafeBoolGetenv(env string) mL0.IResult[core_spec.ISafeBoolReact] {
|
|
|
+func NewSafeBoolGetenv(env defs.Str) mL0.IResult[core_spec.ISafeBoolReact] {
|
|
|
sf := NewSafeBoolReact()
|
|
|
res := sf.Getenv(env)
|
|
|
if res.IsErr() {
|
|
|
@@ -50,14 +51,14 @@ func NewSafeBoolGetenv(env string) mL0.IResult[core_spec.ISafeBoolReact] {
|
|
|
}
|
|
|
|
|
|
// Delete -- удаляет функцию обратного вызова из наблюдения.
|
|
|
-func (sf *safeBoolReact) Delete(key string) {
|
|
|
+func (sf *safeBoolReact) Delete(key defs.Str) {
|
|
|
sf.Lock()
|
|
|
defer sf.Unlock()
|
|
|
delete(sf.dict, key)
|
|
|
}
|
|
|
|
|
|
// Add -- добавляет функцию обратного вызова.
|
|
|
-func (sf *safeBoolReact) Add(key string, fn func(core_spec.EBoolMut)) mL0.IResult[core_spec.EBool] {
|
|
|
+func (sf *safeBoolReact) Add(key defs.Str, fn func(core_spec.EBoolMut)) mL0.IResult[core_spec.EBool] {
|
|
|
sf.Lock()
|
|
|
defer sf.Unlock()
|
|
|
if key == "" {
|
|
|
@@ -99,11 +100,11 @@ func (sf *safeBoolReact) Reset() {
|
|
|
}
|
|
|
|
|
|
// FromStr -- получает число из строки.
|
|
|
-func (sf *safeBoolReact) FromStr(strVal string) mL0.IResult[core_spec.EBool] {
|
|
|
- strVal = strings.ToLower(strVal)
|
|
|
+func (sf *safeBoolReact) FromStr(strVal defs.Str) mL0.IResult[core_spec.EBool] {
|
|
|
+ _strVal := strings.ToLower(strVal.String())
|
|
|
sf.Lock()
|
|
|
defer sf.Unlock()
|
|
|
- switch strVal {
|
|
|
+ switch _strVal {
|
|
|
case "true":
|
|
|
sf.val = true
|
|
|
case "false":
|
|
|
@@ -115,9 +116,9 @@ func (sf *safeBoolReact) FromStr(strVal string) mL0.IResult[core_spec.EBool] {
|
|
|
}
|
|
|
|
|
|
// Getenv -- получает значение из окружения.
|
|
|
-func (sf *safeBoolReact) Getenv(env string) mL0.IResult[core_spec.EBool] {
|
|
|
- strVal := os.Getenv(env)
|
|
|
- res := sf.FromStr(strVal)
|
|
|
+func (sf *safeBoolReact) Getenv(env defs.Str) mL0.IResult[core_spec.EBool] {
|
|
|
+ strVal := os.Getenv(env.String())
|
|
|
+ res := sf.FromStr(defs.Str(strVal))
|
|
|
if res.IsErr() {
|
|
|
err := fmt.Errorf("safeBoolReact.Getenv(): from env %v, err=\n\t%w", env, res.Err())
|
|
|
return mL0.NewErr[core_spec.EBool](err)
|