package hotime

import (
	. "code.hoteas.com/golang/hotime/cache"
	. "code.hoteas.com/golang/hotime/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
}
