📄 gameservermanager.h
字号:
//////////////////////////////////////////////////////////////////////////////// Filename : GameServerManager.h// Written by : reiot@ewestsoft.com// Description : //////////////////////////////////////////////////////////////////////////////#ifndef __GAME_SERVER_MANAGER_H__#define __GAME_SERVER_MANAGER_H__#include "Thread.h"#include "Types.h"#include "Timeval.h"#include "Exception.h"#include "GameServerPlayer.h"#include "ServerSocket.h"#include "Mutex.h"////////////////////////////////////////////////////////////////////////////////// class GameServerManager;////////////////////////////////////////////////////////////////////////////////class GameServerManager : public Thread{public: GameServerManager() throw(Error); ~GameServerManager() throw(Error);public: // 溅绢靛辑滚俊辑 罐酒甸捞绰 弥措 霸烙辑滚 荐 const static uint nMaxGameServers = 100; // initialize void init() throw(Error); void run() throw (Error); // broadcast packet to all players void broadcast(Packet* pPacket) throw(Error); void broadcast(Packet* pPacket, Player* pPlayer) throw(Error); // select void select() throw(TimeoutException, InterruptedException, Error); // process all inputs void processInputs() throw(IOException, Error); // process all outputs void processOutputs() throw(IOException, Error); // process all exceptions void processExceptions() throw(IOException, Error); // process all commands void processCommands() throw(IOException, Error); // accept new connection void acceptNewConnection() throw(Error); // add/delete player void addGameServerPlayer(GameServerPlayer* pGameServerPlayer) throw(DuplicatedException, Error); void deleteGameServerPlayer(SOCKET fd) throw(OutOfBoundException, NoSuchElementException, Error); // lock/unlock void lock() throw(Error) { m_Mutex.lock(); } void unlock() throw(Error) { m_Mutex.unlock(); } void heartbeat() throw(Error);private: // TCP 辑滚 家南苞 家南 叼胶农赋磐 ServerSocket* m_pServerSocket; SOCKET m_SocketID; // 家加等 敲饭捞绢甸狼 家南 叼胶农赋磐狼 笼钦捞促. // m_XXXXFDs[0]篮 历厘侩捞哥, m_XXXFDs[1]捞 角力肺 select()狼 颇扼固磐肺 荤侩等促. // 溜 select()窍扁 傈俊 [0] -> [1] 肺 汗荤啊 捞风绢廉具 茄促. fd_set m_ReadFDs[2]; fd_set m_WriteFDs[2]; fd_set m_ExceptFDs[2]; // select俊 荤侩登绰 矫埃 Timeval m_Timeout[2]; // min_fd, max_fd // select()饶 iterating 且 锭 加档 刘啊甫 困秦辑 荤侩茄促. // 肚茄 select()狼 霉锅掳 颇扼固磐甫 拌魂窍扁 困秦辑 荤侩茄促. SOCKET m_MinFD; SOCKET m_MaxFD; // mutex mutable Mutex m_Mutex; // 霸烙辑滚狼 器牢磐 硅凯. 家南 叼胶农赋磐甫 牢郸胶肺 荤侩茄促. GameServerPlayer* m_pGameServerPlayers[nMaxGameServers];};// external variable declarationextern GameServerManager* g_pGameServerManager;#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -