1 Star 0 Fork 0

gykthh/session

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
session.go 1.66 KB
一键复制 编辑 原始数据 按行查看 历史
gykthh 提交于 2021-06-23 22:10 . session
package session
import (
"bytes"
"encoding/gob"
"encoding/json"
"log"
"time"
)
//Session session对象
type Session struct {
mSessionID string
mUserID string
mLastTimeAccessed time.Time
mValue map[string]interface{}
mOnSave func(sid, value string)
mOnSaveGob func(sid string, sdata []byte)
}
//HasData 查找数据
func (sess *Session) HasData(key string) bool {
_, ok := sess.mValue[key]
return ok
}
//GetData 获取数据
func (sess *Session) GetData(key string) interface{} {
return sess.mValue[key]
}
//PutData 存储数据
func (sess *Session) PutData(key string, value interface{}) {
//log.Println("put data: ", this, key, value)
sess.mValue[key] = value
if sess.mOnSave != nil {
sess.save()
}
if sess.mOnSaveGob != nil {
sess.saveGob()
}
}
//RemoveData 移除数据
func (sess *Session) RemoveData(key string) {
delete(sess.mValue, key)
if sess.mOnSave != nil {
sess.save()
}
if sess.mOnSaveGob != nil {
sess.saveGob()
}
}
//SessID sid
func (sess *Session) SessID() string {
return sess.mSessionID
}
//UserID 用户ID
func (sess *Session) UserID() string {
return sess.mUserID
}
//save 数据持久化
func (sess *Session) save() {
if sess.mOnSave == nil {
return
}
bs, err := json.Marshal(sess.mValue)
if err != nil {
log.Println("[session] save err", err)
return
}
sess.mOnSave(sess.mSessionID, string(bs))
}
func (sess *Session) saveGob() {
if sess.mOnSaveGob == nil {
return
}
var result bytes.Buffer
err := gob.NewEncoder(&result).Encode(sess.mValue)
if err != nil {
log.Println("[session] save gob err", err)
return
}
sess.mOnSaveGob(sess.mSessionID, result.Bytes())
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/gykthh/session.git
git@gitee.com:gykthh/session.git
gykthh
session
session
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385