| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- // package ctx_value -- потокобезопасное значение локального контекста
- package ctx_value
- 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"
- )
- // CtxValue -- потокобезопасное значение локального контекста
- type CtxValue struct {
- sync.RWMutex
- key string
- createAt ATime
- Val_ any
- UpdateAt_ ATime
- Comment_ string
- }
- // NewCtxValue -- возвращает новое потокобезопасное значение локального контекста
- func NewCtxValue(key string, val any, comment string) IResult[*CtxValue] {
- if key == "" {
- err := fmt.Errorf("NewCtxValue(): key is empty")
- return NewErr[*CtxValue](err)
- }
- sf := &CtxValue{
- key: key,
- createAt: helpers.TimeNowStr(),
- Val_: val,
- Comment_: comment,
- }
- return NewRes(sf)
- }
- // Key -- возвращает ключ значения
- func (sf *CtxValue) Key() string {
- return sf.key
- }
- // Val -- возвращает хранимое значение
- func (sf *CtxValue) Val() any {
- sf.RLock()
- defer sf.RUnlock()
- return sf.Val_
- }
- // UpdateAt -- возвращает время обновления значения
- func (sf *CtxValue) UpdateAt() ATime {
- sf.RLock()
- defer sf.RUnlock()
- return sf.UpdateAt_
- }
- // CreateAt -- возвращает время создания значения
- func (sf *CtxValue) CreateAt() ATime {
- return sf.createAt
- }
- // Comment -- возвращает комментарий значения
- func (sf *CtxValue) Comment() string {
- sf.RLock()
- defer sf.RUnlock()
- return sf.Comment_
- }
|