#ifndef SERVER_LIST_MANAGER_HEAD_FILE #define SERVER_LIST_MANAGER_HEAD_FILE #pragma once #include "Stdafx.h" #include "AfxTempl.h" #include ////////////////////////////////////////////////////////////////////////////////// //列表管理 namespace NServerListManager { ////////////////////////////////////////////////////////////////////////////////// //节点总数 struct IPLIST { TCHAR ST_LIST[64][64]; }; ////////////////////////////////////////////////////////////////////////////////// //链路通道 struct LianLu { SYSTEMTIME SystemTimeConclude;//数据更新时间 TCHAR szIP[32];//链路地址 int iIsOk;//是否可用 0未设置 1可用 2不可用 }; struct LianLuGroup { TCHAR szAdminIP[32];//管理地址 LianLu Data[MAX_TONGDAO]; }; //游戏子项 class CGameListItem { //变量定义 public: bool m_bDisuse; //废弃标志 //函数定义 protected: //构造函数 CGameListItem() { m_bDisuse = false; } }; ////////////////////////////////////////////////////////////////////////////////// //种类结构 class CGameTypeItem : public CGameListItem { //变量定义 public: tagGameType m_GameType; //种类信息 //函数定义 public: //构造函数 CGameTypeItem(); }; ////////////////////////////////////////////////////////////////////////////////// //类型结构 class CGameKindItem : public CGameListItem { //变量定义 public: tagGameKind m_GameKind; //类型信息 //函数定义 public: //构造函数 CGameKindItem(); }; ////////////////////////////////////////////////////////////////////////////////// //节点结构 class CGameNodeItem : public CGameListItem { //变量定义 public: tagGameNode m_GameNode; //节点信息 //函数定义 public: //构造函数 CGameNodeItem(); }; ////////////////////////////////////////////////////////////////////////////////// //定制结构 class CGamePageItem : public CGameListItem { //变量定义 public: tagGamePage m_GamePage; //定制信息 //函数定义 public: //构造函数 CGamePageItem(); }; ////////////////////////////////////////////////////////////////////////////////// //房间结构 class CGameServerItem : public CGameListItem { //变量定义 public: tagGameServer m_GameServer; //房间信息 tagGameMatch m_GameMatch; //比赛信息 LianLu m_ListLL[MAX_TONGDAO]; //通讯链路 //功能函数 public: //比赛房间 bool IsMatchServer() { return m_GameMatch.wServerID == m_GameServer.wServerID && m_GameMatch.dwMatchID != 0; } //获取随机链路 std::wstring GetRandom(DWORD dUserID, int iPaiMing, int iCount); //更新链路状态 bool SetLLStat(std::wstring szIp, int iStat, SYSTEMTIME Time); //函数定义 public: //构造函数 CGameServerItem(); }; ////////////////////////////////////////////////////////////////////////////////// //数组说明 typedef CWHArray CGameTypeItemArray; typedef CWHArray CGameKindItemArray; typedef CWHArray CGameNodeItemArray; typedef CWHArray CGamePageItemArray; typedef CWHArray CGameServerItemArray; //索引说明 typedef CMap CTypeItemMap; typedef CMap CKindItemMap; typedef CMap CNodeItemMap; typedef CMap CPageItemMap; typedef CMap CServerItemMap; ////////////////////////////////////////////////////////////////////////////////// //列表服务 class CServerListManager { //索引变量 protected: CTypeItemMap m_TypeItemMap; //种类索引 CKindItemMap m_KindItemMap; //类型索引 CNodeItemMap m_NodeItemMap; //节点索引 CPageItemMap m_PageItemMap; //定制索引 CServerItemMap m_ServerItemMap; //房间索引 //存储变量 protected: CGameTypeItemArray m_TypeItemBuffer; //种类数组 CGameKindItemArray m_KindItemBuffer; //类型数组 CGameNodeItemArray m_NodeItemBuffer; //节点数组 CGamePageItemArray m_PageItemBuffer; //定制数组 CGameServerItemArray m_ServerItemBuffer; //房间数组 //函数定义 public: //构造函数 CServerListManager(); //析构函数 virtual ~CServerListManager(); //管理接口 public: //重置列表 VOID ResetServerList(); //清理内核 VOID CleanKernelItem(); //清理房间 VOID CleanServerItem(); //废弃内核 VOID DisuseKernelItem(); //废弃房间 VOID DisuseServerItem(); //统计接口 public: //统计人数 DWORD CollectOnlineInfo(bool bAndroid); //类型在线 DWORD CollectOnlineInfo(WORD wKindID, bool bAndroid); //插入接口 public: //插入种类 bool InsertGameType(tagGameType * pGameType); //插入类型 bool InsertGameKind(tagGameKind * pGameKind); //插入节点 bool InsertGameNode(tagGameNode * pGameNode); //插入定制 bool InsertGamePage(tagGamePage * pGamePage); //插入房间 bool InsertGameServer(tagGameServer * pGameServer); //删除接口 public: //删除种类 bool DeleteGameType(WORD wTypeID); //删除类型 bool DeleteGameKind(WORD wKindID); //删除节点 bool DeleteGameNode(WORD wNodeID); //删除定制 bool DeleteGamePage(WORD wPageID); //删除房间 bool DeleteGameServer(WORD wServerID); //枚举接口 public: //枚举种类 CGameTypeItem * EmunGameTypeItem(POSITION & Position); //枚举类型 CGameKindItem * EmunGameKindItem(POSITION & Position); //枚举节点 CGameNodeItem * EmunGameNodeItem(POSITION & Position); //枚举定制 CGamePageItem * EmunGamePageItem(POSITION & Position); //枚举房间 CGameServerItem * EmunGameServerItem(POSITION & Position); //查找接口 public: //查找种类 CGameTypeItem * SearchGameType(WORD wTypeID); //查找类型 CGameKindItem * SearchGameKind(WORD wKindID); //查找节点 CGameNodeItem * SearchGameNode(WORD wNodeID); //查找定制 CGamePageItem * SearchGamePage(WORD wPageID); //查找房间 CGameServerItem * SearchGameServer(WORD wServerID); //数目接口 public: //种类数目 DWORD GetGameTypeCount() { return (DWORD)m_TypeItemMap.GetCount(); } //类型数目 DWORD GetGameKindCount() { return (DWORD)m_KindItemMap.GetCount(); } //节点数目 DWORD GetGameNodeCount() { return (DWORD)m_NodeItemMap.GetCount(); } //定制数目 DWORD GetGamePageCount() { return (DWORD)m_PageItemMap.GetCount(); } //房间数目 DWORD GetGameServerCount();// { return (DWORD)m_ServerItemMap.GetCount(); } }; ////////////////////////////////////////////////////////////////////////////////// }; using namespace NServerListManager; #endif