Rename 'maxlifetime' to 'maxLifeTime'

This commit is contained in:
invzhi
2017-12-12 19:30:41 +08:00
parent d01f0230cb
commit ef86349c68

View File

@@ -38,15 +38,15 @@ type Manager struct {
cookieName string //private cookiename cookieName string //private cookiename
lock sync.Mutex // protects session lock sync.Mutex // protects session
provider Provider provider Provider
maxlifetime int64 maxLifeTime int64
} }
func NewManager(provideName, cookieName string, maxlifetime int64) (*Manager, error) { func NewManager(provideName, cookieName string, maxLifeTime int64) (*Manager, error) {
provider, ok := provides[provideName] provider, ok := provides[provideName]
if !ok { if !ok {
return nil, fmt.Errorf("session: unknown provide %q (forgotten import?)", provideName) return nil, fmt.Errorf("session: unknown provide %q (forgotten import?)", provideName)
} }
return &Manager{provider: provider, cookieName: cookieName, maxlifetime: maxlifetime}, nil return &Manager{provider: provider, cookieName: cookieName, maxLifeTime: maxLifeTime}, nil
} }
``` ```
@@ -128,7 +128,7 @@ func (manager *Manager) SessionStart(w http.ResponseWriter, r *http.Request) (se
if err != nil || cookie.Value == "" { if err != nil || cookie.Value == "" {
sid := manager.sessionId() sid := manager.sessionId()
session, _ = manager.provider.SessionInit(sid) session, _ = manager.provider.SessionInit(sid)
cookie := http.Cookie{Name: manager.cookieName, Value: url.QueryEscape(sid), Path: "/", HttpOnly: true, MaxAge: int(manager.maxlifetime)} cookie := http.Cookie{Name: manager.cookieName, Value: url.QueryEscape(sid), Path: "/", HttpOnly: true, MaxAge: int(manager.maxLifeTime)}
http.SetCookie(w, &cookie) http.SetCookie(w, &cookie)
} else { } else {
sid, _ := url.QueryUnescape(cookie.Value) sid, _ := url.QueryUnescape(cookie.Value)
@@ -214,8 +214,8 @@ func init() {
func (manager *Manager) GC() { func (manager *Manager) GC() {
manager.lock.Lock() manager.lock.Lock()
defer manager.lock.Unlock() defer manager.lock.Unlock()
manager.provider.SessionGC(manager.maxlifetime) manager.provider.SessionGC(manager.maxLifeTime)
time.AfterFunc(time.Duration(manager.maxlifetime), func() { manager.GC() }) time.AfterFunc(time.Duration(manager.maxLifeTime), func() { manager.GC() })
} }
``` ```
我们可以看到GC充分利用了time包中的定时器功能当超时`maxLifeTime`之后调用GC函数这样就可以保证`maxLifeTime`时间内的session都是可用的类似的方案也可以用于统计在线用户数之类的。 我们可以看到GC充分利用了time包中的定时器功能当超时`maxLifeTime`之后调用GC函数这样就可以保证`maxLifeTime`时间内的session都是可用的类似的方案也可以用于统计在线用户数之类的。