📄 zoneplayermanager.h
字号:
////////////////////////////////////////////////////////////////////////// Filename : ZonePlayerManager.h// Written by : reiot@ewestsoft.com// Description : ////////////////////////////////////////////////////////////////////////#ifndef __ZONE_PLAYER_MANAGER_H__#define __ZONE_PLAYER_MANAGER_H__// include files#include "Types.h"#include "Exception.h"#include "PlayerManager.h"#include "Player.h"#include "Socket.h"#include "Mutex.h"#include "Effect.h"class GamePlayer;////////////////////////////////////////////////////////////////////////// class ZonePlayerManager;//// 泅犁 ZoneGroup俊 家加等 敲饭捞绢甫 包府窍绰 概聪历 按眉捞促.////////////////////////////////////////////////////////////////////////class ZonePlayerManager : public PlayerManager {public: // constructor ZonePlayerManager() throw(); // destructor ~ZonePlayerManager() throw(); // 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); // broadcast packet void broadcastPacket(Packet* pPacket) throw(Error); void broadcastPacket_NOBLOCKED(Packet* pPacket) throw(Error); // add player to zone player manager void addPlayer(GamePlayer* pGamePlayer) throw(DuplicatedException, Error); void addPlayer_NOBLOCKED(GamePlayer* pGamePlayer) throw(DuplicatedException, Error); // delete player from zone player manager void deletePlayer(SOCKET fd) throw(OutOfBoundException, NoSuchElementException, Error); void deletePlayer_NOBLOCKED(SOCKET fd) throw(OutOfBoundException, NoSuchElementException, Error); void deletePlayer(Player* pPlayer) throw(OutOfBoundException, NoSuchElementException, Error) { deletePlayer(pPlayer->getSocket()->getSOCKET()); } // get player Player* getPlayer(SOCKET fd) throw(OutOfBoundException, NoSuchElementException, Error) ; // get Player by PhoneNumber Player* getPlayerByPhoneNumber(PhoneNumber_t PhoneNumber) throw(OutOfBoundException, NoSuchElementException, Error); // All Member Save void save() throw(Error); void copyPlayers() throw(); // push Player to queue void pushPlayer(GamePlayer* pGamePlayer) throw(Error); void pushOutPlayer(GamePlayer* pGamePlayer) throw(Error); void processPlayerListQueue() throw (Error); // Queue's Player Add Manager void heartbeat() throw(Error); // delete Queue Player void deleteQueuePlayer(GamePlayer* pGamePlayer) throw(NoSuchElementException, Error); void removeFlag (Effect::EffectClass EC) throw(Error); void lock() throw (Error) { m_Mutex.lock(); } void unlock() throw (Error) { m_Mutex.unlock(); } // 葛电 敲饭捞绢甫 沥府茄促. void clearPlayers() throw (Error); void setZGID( ZoneGroupID_t id ) { m_ZGID = id; } ZoneGroupID_t getZGID() const { return m_ZGID; }private: // 家加等 敲饭捞绢甸狼 家南 叼胶农赋磐狼 笼钦捞促. // 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; mutable Mutex m_Mutex2; list< GamePlayer* > m_PlayerListQueue; list< GamePlayer* > m_PlayerOutListQueue; ZoneGroupID_t m_ZGID;};// external variable declarationextern ZonePlayerManager* g_pZonePlayerManager;#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -