📄 incomingplayermanager.h
字号:
//////////////////////////////////////////////////////////////////////////////// Filename : IncomingPlayerManager.h// Written by : reiot@ewestsoft.com// Description : //////////////////////////////////////////////////////////////////////////////#ifndef __INCOMING_PLAYER_MANAGER_H__#define __INCOMING_PLAYER_MANAGER_H__#include "Types.h"#include "Exception.h"#include "PlayerManager.h"#include "GamePlayer.h"#include "ServerSocket.h"#include "DatagramSocket.h"#include "ConnectionInfoManager.h"#include "Mutex.h"//////////////////////////////////////////////////////////////////////////////// class IncomingPlayerManager;//// PlayerManager绰 霸烙 辑滚俊 立加茄 傈眉 敲饭捞绢甫 淬寸窍哥,// ZonePlayerManager绰 阿 粮弊缝俊 辆加等 敲饭捞绢甸阑 淬寸窍绰 馆搁,// IncomingPlayerManager绰 霸烙 辑滚客 楷搬篮 捞风绢脸栏唱 酒流 农府贸甫// 肺爹窍瘤 臼篮 烙矫利牢 惑怕狼 敲饭捞绢甸阑 包府茄促.//// 货肺款 立加阑 牢刘茄 饶, 农府贸甫 肺爹秦辑 敲饭捞绢客 楷包矫挪促.// 农府贸啊 肺爹登搁 敲饭捞绢 棺 农府贸甫 促弗 粮弊缝栏肺 逞败霖促.//////////////////////////////////////////////////////////////////////////////class IncomingPlayerManager : public PlayerManager {public: IncomingPlayerManager() throw(Error); ~IncomingPlayerManager() throw(Error);public: // initialize void init() throw(Error); // broadcast packet to all players void broadcast(Packet* pPacket) throw(Error); // 促澜狼 皋筋靛甸篮 ZoneThread俊 狼秦辑 龋免等促. // select void select() throw(TimeoutException, InterruptedException, Error); // process all players' inputs void processInputs() throw(IOException, Error); // process all players' outputs void processOutputs() throw(IOException, Error); // process all players' exceptions void processExceptions() throw(IOException, Error); // process all players' commands void processCommands() throw(IOException, Error); // accept new connection bool acceptNewConnection() throw(Error); void copyPlayers() throw(); // add/delete player void addPlayer(Player* pGamePlayer) throw(DuplicatedException, Error); void addPlayer_NOBLOCKED(Player* pGamePlayer) throw(DuplicatedException, Error); void deletePlayer(SOCKET fd) throw(OutOfBoundException, NoSuchElementException, Error); void deletePlayer_NOBLOCKED(SOCKET fd) throw(OutOfBoundException, NoSuchElementException, Error); // get Player by string GamePlayer* getPlayer_NOBLOCKED(const string & id) throw(NoSuchElementException, Error); GamePlayer* getPlayer(const string & id) throw(NoSuchElementException, Error); GamePlayer* getReadyPlayer(const string & id) throw(NoSuchElementException, Error); // lock/unlock void lock() throw(Error) { m_Mutex.lock(); } void unlock() throw(Error) { m_Mutex.unlock(); } // push Player to queue void pushPlayer(GamePlayer* pGamePlayer) throw(Error); void pushOutPlayer(GamePlayer* pGamePlayer) throw(Error); // Queue's Player Add Manager void heartbeat() throw(Error); void deleteQueuePlayer(GamePlayer* pGamePlayer) throw(NoSuchElementException, Error); // 葛电 敲饭捞绢甫 沥府茄促. void clearPlayers() 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; list< GamePlayer* > m_PlayerListQueue; list< GamePlayer* > m_PlayerOutListQueue; int m_CheckValue; // by sigi. for debugging. 2002.11.11 mutable Mutex m_MutexOut;};// external variable declarationextern IncomingPlayerManager* g_pIncomingPlayerManager;#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -