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);
            }
        }
示例#3
0
        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;
        }
示例#4
0
        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;
            }
        }
示例#5
0
        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
            }
        }