诸暨麻将添加redis
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 
 
 

268 wiersze
7.6 KiB

  1. #ifndef SERVER_LIST_MANAGER_HEAD_FILE
  2. #define SERVER_LIST_MANAGER_HEAD_FILE
  3. #pragma once
  4. #include "Stdafx.h"
  5. #include "AfxTempl.h"
  6. #include <xstring>
  7. //////////////////////////////////////////////////////////////////////////////////
  8. //列表管理
  9. namespace NServerListManager
  10. {
  11. //////////////////////////////////////////////////////////////////////////////////
  12. //节点总数
  13. struct IPLIST
  14. {
  15. TCHAR ST_LIST[64][64];
  16. };
  17. //////////////////////////////////////////////////////////////////////////////////
  18. //链路通道
  19. struct LianLu
  20. {
  21. SYSTEMTIME SystemTimeConclude;//数据更新时间
  22. TCHAR szIP[32];//链路地址
  23. int iIsOk;//是否可用 0未设置 1可用 2不可用
  24. };
  25. struct LianLuGroup
  26. {
  27. TCHAR szAdminIP[32];//管理地址
  28. LianLu Data[MAX_TONGDAO];
  29. };
  30. //游戏子项
  31. class CGameListItem
  32. {
  33. //变量定义
  34. public:
  35. bool m_bDisuse; //废弃标志
  36. //函数定义
  37. protected:
  38. //构造函数
  39. CGameListItem() { m_bDisuse = false; }
  40. };
  41. //////////////////////////////////////////////////////////////////////////////////
  42. //种类结构
  43. class CGameTypeItem : public CGameListItem
  44. {
  45. //变量定义
  46. public:
  47. tagGameType m_GameType; //种类信息
  48. //函数定义
  49. public:
  50. //构造函数
  51. CGameTypeItem();
  52. };
  53. //////////////////////////////////////////////////////////////////////////////////
  54. //类型结构
  55. class CGameKindItem : public CGameListItem
  56. {
  57. //变量定义
  58. public:
  59. tagGameKind m_GameKind; //类型信息
  60. //函数定义
  61. public:
  62. //构造函数
  63. CGameKindItem();
  64. };
  65. //////////////////////////////////////////////////////////////////////////////////
  66. //节点结构
  67. class CGameNodeItem : public CGameListItem
  68. {
  69. //变量定义
  70. public:
  71. tagGameNode m_GameNode; //节点信息
  72. //函数定义
  73. public:
  74. //构造函数
  75. CGameNodeItem();
  76. };
  77. //////////////////////////////////////////////////////////////////////////////////
  78. //定制结构
  79. class CGamePageItem : public CGameListItem
  80. {
  81. //变量定义
  82. public:
  83. tagGamePage m_GamePage; //定制信息
  84. //函数定义
  85. public:
  86. //构造函数
  87. CGamePageItem();
  88. };
  89. //////////////////////////////////////////////////////////////////////////////////
  90. //房间结构
  91. class CGameServerItem : public CGameListItem
  92. {
  93. //变量定义
  94. public:
  95. tagGameServer m_GameServer; //房间信息
  96. tagGameMatch m_GameMatch; //比赛信息
  97. LianLu m_ListLL[MAX_TONGDAO]; //通讯链路
  98. //功能函数
  99. public:
  100. //比赛房间
  101. bool IsMatchServer() { return m_GameMatch.wServerID == m_GameServer.wServerID && m_GameMatch.dwMatchID != 0; }
  102. //获取随机链路
  103. std::wstring GetRandom(DWORD dUserID, int iPaiMing, int iCount);
  104. //更新链路状态
  105. bool SetLLStat(std::wstring szIp, int iStat, SYSTEMTIME Time);
  106. //函数定义
  107. public:
  108. //构造函数
  109. CGameServerItem();
  110. };
  111. //////////////////////////////////////////////////////////////////////////////////
  112. //数组说明
  113. typedef CWHArray<CGameTypeItem *> CGameTypeItemArray;
  114. typedef CWHArray<CGameKindItem *> CGameKindItemArray;
  115. typedef CWHArray<CGameNodeItem *> CGameNodeItemArray;
  116. typedef CWHArray<CGamePageItem *> CGamePageItemArray;
  117. typedef CWHArray<CGameServerItem *> CGameServerItemArray;
  118. //索引说明
  119. typedef CMap<WORD, WORD, CGameTypeItem *, CGameTypeItem * &> CTypeItemMap;
  120. typedef CMap<WORD, WORD, CGameKindItem *, CGameKindItem * &> CKindItemMap;
  121. typedef CMap<WORD, WORD, CGameNodeItem *, CGameNodeItem * &> CNodeItemMap;
  122. typedef CMap<WORD, WORD, CGamePageItem *, CGamePageItem * &> CPageItemMap;
  123. typedef CMap<WORD, WORD, CGameServerItem *, CGameServerItem * &> CServerItemMap;
  124. //////////////////////////////////////////////////////////////////////////////////
  125. //列表服务
  126. class CServerListManager
  127. {
  128. //索引变量
  129. protected:
  130. CTypeItemMap m_TypeItemMap; //种类索引
  131. CKindItemMap m_KindItemMap; //类型索引
  132. CNodeItemMap m_NodeItemMap; //节点索引
  133. CPageItemMap m_PageItemMap; //定制索引
  134. CServerItemMap m_ServerItemMap; //房间索引
  135. //存储变量
  136. protected:
  137. CGameTypeItemArray m_TypeItemBuffer; //种类数组
  138. CGameKindItemArray m_KindItemBuffer; //类型数组
  139. CGameNodeItemArray m_NodeItemBuffer; //节点数组
  140. CGamePageItemArray m_PageItemBuffer; //定制数组
  141. CGameServerItemArray m_ServerItemBuffer; //房间数组
  142. //函数定义
  143. public:
  144. //构造函数
  145. CServerListManager();
  146. //析构函数
  147. virtual ~CServerListManager();
  148. //管理接口
  149. public:
  150. //重置列表
  151. VOID ResetServerList();
  152. //清理内核
  153. VOID CleanKernelItem();
  154. //清理房间
  155. VOID CleanServerItem();
  156. //废弃内核
  157. VOID DisuseKernelItem();
  158. //废弃房间
  159. VOID DisuseServerItem();
  160. //统计接口
  161. public:
  162. //统计人数
  163. DWORD CollectOnlineInfo(bool bAndroid);
  164. //类型在线
  165. DWORD CollectOnlineInfo(WORD wKindID, bool bAndroid);
  166. //插入接口
  167. public:
  168. //插入种类
  169. bool InsertGameType(tagGameType * pGameType);
  170. //插入类型
  171. bool InsertGameKind(tagGameKind * pGameKind);
  172. //插入节点
  173. bool InsertGameNode(tagGameNode * pGameNode);
  174. //插入定制
  175. bool InsertGamePage(tagGamePage * pGamePage);
  176. //插入房间
  177. bool InsertGameServer(tagGameServer * pGameServer);
  178. //删除接口
  179. public:
  180. //删除种类
  181. bool DeleteGameType(WORD wTypeID);
  182. //删除类型
  183. bool DeleteGameKind(WORD wKindID);
  184. //删除节点
  185. bool DeleteGameNode(WORD wNodeID);
  186. //删除定制
  187. bool DeleteGamePage(WORD wPageID);
  188. //删除房间
  189. bool DeleteGameServer(WORD wServerID);
  190. //枚举接口
  191. public:
  192. //枚举种类
  193. CGameTypeItem * EmunGameTypeItem(POSITION & Position);
  194. //枚举类型
  195. CGameKindItem * EmunGameKindItem(POSITION & Position);
  196. //枚举节点
  197. CGameNodeItem * EmunGameNodeItem(POSITION & Position);
  198. //枚举定制
  199. CGamePageItem * EmunGamePageItem(POSITION & Position);
  200. //枚举房间
  201. CGameServerItem * EmunGameServerItem(POSITION & Position);
  202. //查找接口
  203. public:
  204. //查找种类
  205. CGameTypeItem * SearchGameType(WORD wTypeID);
  206. //查找类型
  207. CGameKindItem * SearchGameKind(WORD wKindID);
  208. //查找节点
  209. CGameNodeItem * SearchGameNode(WORD wNodeID);
  210. //查找定制
  211. CGamePageItem * SearchGamePage(WORD wPageID);
  212. //查找房间
  213. CGameServerItem * SearchGameServer(WORD wServerID);
  214. //数目接口
  215. public:
  216. //种类数目
  217. DWORD GetGameTypeCount() { return (DWORD)m_TypeItemMap.GetCount(); }
  218. //类型数目
  219. DWORD GetGameKindCount() { return (DWORD)m_KindItemMap.GetCount(); }
  220. //节点数目
  221. DWORD GetGameNodeCount() { return (DWORD)m_NodeItemMap.GetCount(); }
  222. //定制数目
  223. DWORD GetGamePageCount() { return (DWORD)m_PageItemMap.GetCount(); }
  224. //房间数目
  225. DWORD GetGameServerCount();// { return (DWORD)m_ServerItemMap.GetCount(); }
  226. };
  227. //////////////////////////////////////////////////////////////////////////////////
  228. };
  229. using namespace NServerListManager;
  230. #endif