/* Copyright 2008,2009,2010 Edwin Eefting (edwin@datux.nl) This file is part of Synapse. Synapse is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Synapse is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Synapse. If not, see . */ #ifndef CUSERMAN_H #define CUSERMAN_H #include "cuser.h" #include "cgroup.h" #include "csession.h" #include #include namespace synapse { using namespace std; using namespace boost; #define MAX_SESSIONS 1000 /** @author */ class CuserMan{ public: CuserMan(); ~CuserMan(); CuserPtr getUser(const string & userName); bool addUser(const CuserPtr & user); CgroupPtr getGroup(const string & groupName); bool addGroup(const CgroupPtr &group); int addSession( CsessionPtr session); CsessionPtr getSession(const int & sessionId); bool delSession(const int id); list delCookieSessions(int cookie, CmodulePtr module); void getStatus(Cvar & var); void doShutdown(); string login(const int & sessionId, const string & userName, const string & password); private: bool shutdown; list users; list groups; //performance: we use an oldskool array, so session lookups are quick int sessionCounter; CsessionPtr sessions[MAX_SESSIONS+1]; int sessionMaxPerUser; int statMaxSessions; //maximum sessions ever used, for statistics }; } #endif