代码拉取完成,页面将自动刷新
package mego
import (
"sync"
"time"
)
// memSessionProvider the memory session provider struct
type memSessionProvider struct {
dataMap sync.Map
sessionTimeout time.Duration
}
// Init init memory session provider
func (mem *memSessionProvider) Init(timeout time.Duration) error {
mem.sessionTimeout = timeout
return nil
}
// Read get memory session store by sid
func (mem *memSessionProvider) Read(sid string) SessionStore {
var store *memSessionStore
data, ok := mem.dataMap.Load(sid)
now := time.Now()
if !ok {
store = &memSessionStore{
sid: sid,
updateTime: now,
timeout: mem.sessionTimeout,
value: make(map[string]interface{}),
prov: mem,
}
} else {
store = data.(*memSessionStore)
if store.expired(now) {
store = &memSessionStore{
sid: sid,
updateTime: now,
timeout: mem.sessionTimeout,
value: make(map[string]interface{}),
prov: mem,
}
} else {
store.updateTime = now
}
}
return store
}
// Destroy delete session store in memory session by id
func (mem *memSessionProvider) Destroy(sid string) error {
mem.dataMap.Delete(sid)
return nil
}
// GC clean expired session stores in memory session
func (mem *memSessionProvider) GC() {
now := time.Now()
mem.dataMap.Range(func(key, data interface{}) bool {
store := data.(*memSessionStore)
if store.expired(now) {
mem.dataMap.Delete(key)
}
return true
})
}
// NewMemSessionProvider create a new memory session provider with default config
func NewMemSessionProvider() SessionProvider {
return &memSessionProvider{}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。