iedc-go/session.go

57 lines
900 B
Go

package hotime
import (
. "./cache"
. "./common"
)
//session对象
type SessionIns struct {
*HoTimeCache
SessionId string
Map
ContextBase
}
func (that *SessionIns) set() {
that.HoTimeCache.Session(HEAD_SESSION_ADD+that.SessionId, that.Map)
}
func (that *SessionIns) Session(key string, data ...interface{}) *Obj {
if that.Map == nil {
that.get()
}
if len(data) != 0 {
if data[0] == nil {
delete(that.Map, key)
that.set()
} else {
that.Map[key] = data[0]
that.set()
}
return &Obj{Data: nil}
}
return &Obj{Data: that.Map.Get(key)}
}
func (that *SessionIns) get() {
that.Map = that.HoTimeCache.Session(HEAD_SESSION_ADD + that.SessionId).ToMap()
if that.Map != nil {
return
}
that.Map = Map{}
that.HoTimeCache.Session(HEAD_SESSION_ADD+that.SessionId, that.Map)
return
}
func (that *SessionIns) Init(cache *HoTimeCache) {
that.HoTimeCache = cache
}