| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- // package ctx_value -- потокобезопасное значение локального контекста.
- package ctx_value
- import (
- "gitp78su.ipnodns.ru/svi/kern/v4/d0"
- "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/table/owner"
- )
- // CtxValue -- потокобезопасное значение локального контекста.
- type CtxValue struct {
- *d0.MSafeMutex
- key *d0.LTxt
- createAt *d0.LTime
- Val_ any
- UpdateAt_ *d0.MTime
- Comment_ *d0.LTxt
- }
- // NewCtxValue -- возвращает новое потокобезопасное значение локального контекста.
- func NewCtxValue[T d0.TxtConstraint](owner *owner.LOwner, key d0.Txt, val any, comment T) *CtxValue {
- d0.If(key == "").Hassert("NewCtxValue(): key is empty", []any{})
- sf := &CtxValue{
- MSafeMutex: d0.MutSafeMutex(),
- key: d0.LetTxt(owner, key),
- createAt: d0.LetTimeAuto(),
- UpdateAt_: d0.MutTimeAuto(),
- Val_: val,
- Comment_: d0.LetTxt(owner, comment),
- }
- return sf
- }
- // Key -- возвращает ключ значения.
- func (sf *CtxValue) Key() *d0.LTxt {
- return sf.key
- }
- // Val -- возвращает хранимое значение.
- func (sf *CtxValue) Val() any {
- sf.RLock()
- defer sf.RUnlock()
- return sf.Val_
- }
- // UpdateAt -- возвращает время обновления значения.
- func (sf *CtxValue) UpdateAt() *d0.MTime {
- sf.RLock()
- defer sf.RUnlock()
- return sf.UpdateAt_
- }
- // CreateAt -- возвращает время создания значения.
- func (sf *CtxValue) CreateAt() *d0.LTime {
- return sf.createAt
- }
- // Comment -- возвращает комментарий значения.
- func (sf *CtxValue) Comment() *d0.LTxt {
- sf.RLock()
- defer sf.RUnlock()
- return sf.Comment_
- }
|