诸暨麻将添加redis
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 
 

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