diff --git a/servlet/session.go b/servlet/session.go new file mode 100644 index 0000000..fc90ff1 --- /dev/null +++ b/servlet/session.go @@ -0,0 +1,35 @@ +package servlet + +import ( + "git.loafle.net/commons/server-go" + "sync" +) + +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) +} \ No newline at end of file