package server import ( "sync" server "git.loafle.net/overflow/server-go" ) type Session struct { TargetID string ServletCtx server.ServletCtx } var sessionPool sync.Pool func RetainSession(targetID string, servletCtx server.ServletCtx) *Session { v := sessionPool.Get() var _session *Session if v == nil { _session = &Session{} } else { _session = v.(*Session) } _session.TargetID = targetID _session.ServletCtx = servletCtx return _session } func ReleaseSession(_session *Session) { _session.TargetID = "" _session.ServletCtx = nil sessionPool.Put(_session) }