blob: f766ddaf6cf0723a1724e9c205e77a0f0cf0dbb6 [file] [log] [blame]
package holder
import (
"github.com/dk-lockdown/seata-golang/tc/model"
"github.com/dk-lockdown/seata-golang/tc/session"
"github.com/dk-lockdown/seata-golang/util"
)
type DefaultSessionManager struct {
AbstractSessionManager
SessionMap map[string]*session.GlobalSession
}
func NewDefaultSessionManager(name string) ISessionManager {
return &DefaultSessionManager{
AbstractSessionManager: AbstractSessionManager {
TransactionStoreManager: &AbstractTransactionStoreManager{},
Name: name,
},
SessionMap: make(map[string]*session.GlobalSession),
}
}
func (sessionManager *DefaultSessionManager) AddGlobalSession(session *session.GlobalSession) error {
sessionManager.AbstractSessionManager.AddGlobalSession(session)
sessionManager.SessionMap[session.Xid] = session
return nil
}
func (sessionManager *DefaultSessionManager) FindGlobalSession(xid string) *session.GlobalSession {
return sessionManager.SessionMap[xid]
}
func (sessionManager *DefaultSessionManager) FindGlobalSessionWithBranchSessions(xid string, withBranchSessions bool) *session.GlobalSession {
return sessionManager.SessionMap[xid]
}
func (sessionManager *DefaultSessionManager) RemoveGlobalSession(session *session.GlobalSession) error{
sessionManager.AbstractSessionManager.RemoveGlobalSession(session)
delete(sessionManager.SessionMap,session.Xid)
return nil
}
func (sessionManager *DefaultSessionManager) AllSessions() []*session.GlobalSession {
var sessions = make([]*session.GlobalSession,0)
for _,session := range sessionManager.SessionMap {
sessions = append(sessions,session)
}
return sessions
}
func (sessionManager *DefaultSessionManager) FindGlobalSessions(condition model.SessionCondition) []*session.GlobalSession {
var sessions = make([]*session.GlobalSession,0)
for _,session := range sessionManager.SessionMap {
if int64(util.CurrentTimeMillis()) - session.BeginTime > condition.OverTimeAliveMills {
sessions = append(sessions, session)
}
}
return sessions
}
func (sessionManager *DefaultSessionManager) SetTransactionStoreManager(transactionStoreManager ITransactionStoreManager) {
sessionManager.TransactionStoreManager = transactionStoreManager
}