37 lines
585 B
Go
37 lines
585 B
Go
package servlet
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"git.loafle.net/commons/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)
|
|
}
|