| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- // package ctx_value -- потокобезопасное значение локального контекста.
- package ctx_value
- import (
- "sync"
- mL0 "gitp78su.ipnodns.ru/svi/kern/v4/lev0"
- mKt "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kspec"
- "gitp78su.ipnodns.ru/svi/kern/v4/lev0/voc"
- )
- // CtxValue -- потокобезопасное значение локального контекста.
- type CtxValue struct {
- sync.RWMutex
- key string
- createAt mKt.ITime
- Val_ any
- UpdateAt_ mKt.ITimeMut
- Comment_ string
- }
- // NewCtxValue -- возвращает новое потокобезопасное значение локального контекста.
- func NewCtxValue(key string, val any, comment string) mKt.ICtxValue {
- mL0.Hassert(key != "", "NewCtxValue(): key is empty")
- sf := &CtxValue{
- key: key,
- createAt: voc.NewETimeAuto(),
- UpdateAt_: voc.NewETimeAutoMut(),
- Val_: val,
- Comment_: comment,
- }
- return 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() mKt.ITimeMut {
- sf.RLock()
- defer sf.RUnlock()
- return sf.UpdateAt_
- }
- // CreateAt -- возвращает время создания значения.
- func (sf *CtxValue) CreateAt() mKt.ITime {
- return sf.createAt
- }
- // Comment -- возвращает комментарий значения.
- func (sf *CtxValue) Comment() string {
- sf.RLock()
- defer sf.RUnlock()
- return sf.Comment_
- }
|