internal static BizSession ToSession(this AdminSession adminSession) { BizSession session = new BizSession( adminSession.SessionId, adminSession.Login, adminSession.CreatedOn, adminSession.LastAccessedOn, adminSession.Data); return session; }
public void AddSession(BizSession session) { lock (_lock) { if (_sessions.Count == _capacity) { throw new ApplicationException(); // todo2[ak] } _sessions.Add(session); } }
public BizSession CreateSession(string login, string sessionInfo) { // todo1[ak] check args string sessionId = _securityProvider.GenerateHashString(); login = login.ToLower(); DateTime createdOn = _timeSource.GetTime(); DateTime lastAccessedOn = createdOn; BizSession session = new BizSession(sessionId, login, createdOn, lastAccessedOn, sessionInfo); this.TakeSession(session); _sessionRepository.SaveSession(session); return session; }
public BizSession[] GetOnlineSessions(string login) { // todo1[ak] check args lock (_lock) { BizSession[] sessions; IAccountSessionCollection coll = _accountSessions.GetOrDefault(login); if (coll == null) { sessions = new BizSession[0]; } else { sessions = coll.GetSessions(); } return sessions; } }
private void TakeSession(BizSession session) { lock (_lock) { _allSessions[session.SessionId] = session; string login = session.Login; IAccountSessionCollection coll = _accountSessions.GetOrDefault(login); if (coll == null) { coll = new AccountSessionCollection(login, _accountSessionCollectionCapacity); _accountSessions.Add(coll.Login, coll); } coll.AddSession(session); // may overflow and hence throw; will fix later } }