/* * This file is a part of Winix * and is not publicly distributed * * Copyright (c) 2008-2012, Tomasz Sowa * All rights reserved. * */ #ifndef headerfile_winix_core_sessionmanager #define headerfile_winix_core_sessionmanager #include #include #include "sessioncontainer.h" #include "ipbancontainer.h" #include "config.h" #include "request.h" #include "lastcontainer.h" #include "system.h" #include "synchro.h" #include "basethread.h" class SessionManager : public BaseThread { public: SessionManager(); void SetCur(Cur * pcur); void SetConfig(Config * pconfig); void SetSystem(System * psystem); void SetLastContainer(LastContainer * plast_container); // can return a null pointer Session * FindSession(long id); void SetSession(); void DeleteSessions(); // deleting all sessions bool ChangeSessionId(long old_id); void InitBanList(); void InitTmpSession(); void UninitTmpSession(); Session * GetTmpSession(); Session * GetCurSession(); void LoadSessions(); void SaveSessions(); SessionContainer::Iterator SessionBegin(); SessionContainer::Iterator SessionEnd(); size_t Size(); size_t MarkAllSessionsToRemove(long user_id); IPBan & AddIPToBanList(int ip); size_t BanListSize(); IPBan & GetIPBan(size_t index); void RemoveIPBan(int ip); void ClearIPBanList(); private: Config * config; Cur * cur; System * system; LastContainer * last_container; // current session - set by SetSession() Session * session; SessionContainer session_tab; IPBanContainer ban_tab; IPBan * current_ip_ban; // session with id 0 Session temporary_session; bool IsSession(long s); long CreateSessionId(); void CreateSession(); bool SetSessionFromCookie(const std::wstring & cookie); void SetTemporarySession(); // second thread int deleted; virtual void Work(); void CheckSession(SessionContainer::Iterator & i); bool IsSessionOutdated(const Session & s) const; void DeleteSession(Session * del_session); void CheckWheterIPListIsSorted(); }; #endif