diff options
author | Bent Bisballe Nyeng <deva@aasimon.org> | 2012-03-01 15:36:13 +0100 |
---|---|---|
committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2012-03-01 15:36:13 +0100 |
commit | 72b7d402e36ac2235e89c3b099a634f3fb5e5770 (patch) | |
tree | 805997f60d039514757a0072e096ec5a8841c3a0 /server/src/session.cc | |
parent | 2f90b203abb638b8c18db166102a0ef183c9b213 (diff) |
activeSessions rewrite to prevent deadlock.
Diffstat (limited to 'server/src/session.cc')
-rw-r--r-- | server/src/session.cc | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/server/src/session.cc b/server/src/session.cc index 6bb4440..57499f9 100644 --- a/server/src/session.cc +++ b/server/src/session.cc @@ -346,15 +346,29 @@ void Sessions::store() */ } -std::vector<std::string> Sessions::activeSessions() +std::vector<Sessions::SessionInfo> Sessions::activeSessions() { MutexAutolock lock(mutex); - std::vector<std::string> act; + std::vector<SessionInfo> act; std::map<std::string, Session*>::iterator i = sessions.begin(); while(i != sessions.end()) { - act.push_back(i->first); + Session *s = i->second; + SessionInfo si; + si.id = i->first; + si.templ = "LOCKED" + + if(s->trylock()) { + // si.user = "simpson"; + // si.course = s->course; + si.patientid = s->patientid; + si.templ = s->templ; + si.idle = s->idle(); + // si.ondisc = false; + s->unlock(); + } + act.push_back(si); i++; } |