gauthd
 
Loading...
Searching...
No Matches
D:/pwsrc2.0/docs/gauthd/gauthserver.hpp
Go to the documentation of this file.
1
5
6 #ifndef __GNET_GAUTHSERVER_HPP
7 #define __GNET_GAUTHSERVER_HPP
8
9 #include "protocol.h"
10
11 namespace GNET
12 {
13
18 struct UserInfo
19 {
20 unsigned int sid;
21 unsigned int localsid;
22 char zoneid;
23
28
35 UserInfo(unsigned int _s, unsigned int _l, char _z)
36 : sid(_s), localsid(_l), zoneid(_z) { }
37 };
38
44 class GAuthServer : public Protocol::Manager
45 {
46 int auth_idx;
47 static GAuthServer instance;
48 size_t accumulate_limit;
49
54 const Session::State *GetInitState() const;
55
61 bool OnCheckAccumulate(size_t size) const { return accumulate_limit == 0 || size < accumulate_limit; }
62
67 void OnAddSession(Session::ID sid);
68
73 void OnDelSession(Session::ID sid);
74
75 public:
80 static GAuthServer *GetInstance() { return &instance; }
81
86 std::string Identification() const { return "GAuthServer"; }
87
92 void SetAccumulate(size_t size) { accumulate_limit = size; }
93
97 GAuthServer() : accumulate_limit(0) { }
98
99 Octets shared_key;
100
107 bool ValidUser(Session::ID sid, int userid);
108
109 Thread::RWLock locker_map;
110
115 typedef std::map<int, UserInfo> UserMap;
117
122 void SetSidIdx(int idx) { auth_idx = idx; }
123
128 int GetSidIdx() { return auth_idx; }
129
130 Thread::Mutex locker_accntmap;
131
136 typedef std::map<int, unsigned int> AccountingMap;
138
139 Thread::Mutex locker_zonemap;
140
145 typedef std::map<unsigned int, char> ZoneMap;
147 };
148
149 //-----------------------------------------------------------------------------------
150
156 class CheckTimer : public Thread::Runnable
157 {
158 int clear_time;
159 int update_time;
160
161 public:
167 CheckTimer(int _time, int _proir = 1)
168 : Runnable(_proir), update_time(_time) { }
169
173 void Run();
174
175 private:
179 void CheckAddCashcn();
180
184 void AntibrutClear();
185 };
186
187 //-----------------------------------------------------------------------------------
188
189 };
190 #endif
CheckTimer(int _time, int _proir=1)
Конструктор.
void Run()
Основной метод таймера.
Thread::RWLock locker_map
Блокировка для доступа к usermap.
int GetSidIdx()
Получить индекс аутентификации.
std::map< unsigned int, char > ZoneMap
Map для связи сессий и зон (session id -> zoneid).
static GAuthServer * GetInstance()
Получить экземпляр синглтона.
Thread::Mutex locker_accntmap
Блокировка для доступа к accntmap.
void SetAccumulate(size_t size)
Установить лимит накопления данных.
Thread::Mutex locker_zonemap
Блокировка для доступа к zonemap.
bool ValidUser(Session::ID sid, int userid)
Проверить валидность пользователя.
ZoneMap zonemap
Контейнер с данными о зонах.
AccountingMap accntmap
Контейнер с данными о времени онлайн.
GAuthServer()
Конструктор по умолчанию.
Octets shared_key
Общий ключ для шифрования.
std::string Identification() const
Идентификатор протокола.
std::map< int, UserInfo > UserMap
Map для хранения информации о пользователях (userid -> UserInfo).
std::map< int, unsigned int > AccountingMap
Map для учета времени онлайн (userid -> время в секундах).
void SetSidIdx(int idx)
Установить индекс аутентификации.
UserMap usermap
Контейнер с данными пользователей.
Основное пространство имен для сетевых компонентов системы.
UserInfo()
Конструктор по умолчанию.
char zoneid
Идентификатор зоны пользователя.
unsigned int sid
Уникальный идентификатор сессии.
UserInfo(unsigned int _s, unsigned int _l, char _z)
Конструктор с параметрами.
unsigned int localsid
Локальный идентификатор сессии.