changed: updated to the new ezc api, this with O(1) when looking for a specific ezc function

changed: sessions are deleted at the end of a request (and only a few sessions)
         other sessions will be deleted after a next request


git-svn-id: svn://ttmath.org/publicrep/winix/trunk@684 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
2010-11-25 22:42:24 +00:00
parent 933c8841ff
commit 08e53919e2
25 changed files with 753 additions and 634 deletions

View File

@@ -119,16 +119,17 @@ return i->second;
void SessionContainer::DelFirstByTimeInterval(time_t interval, bool skip_remember_flag)
size_t SessionContainer::DelFirstByTimeInterval(time_t interval, size_t how_many_max, bool skip_remember_flag)
{
IndexTime::iterator i = index_time.begin();
IndexTime::iterator iold;
time_t limit = std::time(0) - interval;
Session * old_session = request->session;
size_t deleted = 0;
while( i != index_time.end() && i->second->last_time < limit )
while( i != index_time.end() && i->second->last_time < limit && deleted < how_many_max )
{
long id = i->second->id;
//long id = i->second->id; // !! for logs (not used now)
iold = i;
++i; // incrementing before deleting old one
@@ -147,15 +148,22 @@ Session * old_session = request->session;
index_time.erase(iold);
table_size -= 1;
request->session = 0;
deleted += 1;
log << log3 << "SC: deleted index_time for session id: " << id << logend;
log << log3 << "SC: deleted session, id: " << id << logend;
//log << log3 << "SC: deleted index_time for session id: " << id << logend;
//log << log3 << "SC: deleted session, id: " << id << logend;
}
request->session = old_session;
return deleted;
}
void SessionContainer::DelFromIdIndex(SessionContainer::Iterator iter)
{
IndexId::iterator i;
@@ -165,7 +173,7 @@ IndexId::iterator i;
if( i->second == iter )
{
index_id.erase(i);
log << log3 << "SC: deleted index_id for session id: " << iter->id << logend;
//log << log3 << "SC: deleted index_id for session id: " << iter->id << logend;
break;
}
@@ -190,7 +198,8 @@ void SessionContainer::UpdateLastTime(SessionContainer::Iterator iter, time_t ne
iter->last_time = new_time;
iter->tm_last_time = Time(new_time);
log << log3 << "SC: last time and the time index for session id: " << iter->id << " updated" << logend;
//log << log3 << "SC: last time and the time index for session id: " << iter->id << " updated" << logend;
log << log3 << "SC: last time for session id: " << iter->id << " updated" << logend;
found = true;
break;
}