goserver_sync/core/transact/transctx.go

40 lines
639 B
Go

// transctx
package transact
import (
"sync"
)
type TransCtx struct {
fields map[interface{}]interface{}
lock *sync.RWMutex
}
func NewTransCtx() *TransCtx {
tc := &TransCtx{
lock: new(sync.RWMutex),
}
return tc
}
func (this *TransCtx) SetField(k, v interface{}) {
this.lock.Lock()
if this.fields == nil {
this.fields = make(map[interface{}]interface{})
}
this.fields[k] = v
this.lock.Unlock()
}
func (this *TransCtx) GetField(k interface{}) interface{} {
this.lock.RLock()
if this.fields != nil {
if v, exist := this.fields[k]; exist {
this.lock.RUnlock()
return v
}
}
this.lock.RUnlock()
return nil
}