DBBackup.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:3k
源码类别:

模拟服务器

开发平台:

C/C++

  1. // DBBackup.h: interface for the CDBBackup class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(DBBACKUP_H)
  5. #define DBBACKUP_H
  6. #include "DBTable.h"
  7. #include "S3DBInterface.h"
  8. #if _MSC_VER > 1000
  9. #pragma once
  10. #endif // _MSC_VER > 1000
  11. #define LEVELSTATNUM 1000
  12. #define MONEYSTATNUM 1000
  13. #define KILLERSTATNUM 10
  14. #define SECTMAXSTATNUM 100
  15. class CDBBackup  
  16. {
  17. public:
  18. struct TRoleList
  19. {
  20. char Name[20];
  21. //char Account[32];
  22. int Level;
  23. int Money;
  24. int Sect; //门派
  25. int FightExp;
  26. int KillNum;
  27. BYTE Sort;
  28. };
  29. struct TStatData
  30. {
  31. TRoleList LevelStat[LEVELSTATNUM]; //级别最多排名列表
  32. TRoleList MoneyStat[MONEYSTATNUM]; //金钱最多排名列表
  33. TRoleList KillerStat[KILLERSTATNUM]; //杀人最多排名列表
  34. TRoleList MoneyStatBySect[11][SECTMAXSTATNUM]; //各门派金钱最多排名列表[门派][玩家数]
  35. TRoleList LevelStatBySect[11][SECTMAXSTATNUM]; //各门派级别最多排名列表[门派][玩家数]
  36. int SectPlayerNum[11]; //各个门派的玩家数
  37. int SectMoneyMost[11]; //财富排名前MONEYSTATNUM玩家中各门派所占比例数
  38. int SectLevelMost[11]; //级别排名前LEVELSTATNUM玩家中各门派所占比例数
  39. };
  40. private:
  41. enum StatType{stMoney, stLevel, stKiller};//需要判断的类别(stMoney, stLevel)
  42. static TRoleList* GetMin( //查找出列表中钱/级别(或其他)最少的一个元素
  43. TRoleList* const aRoleList, //列表
  44. const int n, //列表大小
  45. const StatType aType); //需要判断的类别(stMoney, stLevel)
  46. static void ListSort( //对列表做特定的排序
  47. TRoleList* const aRoleList,
  48. const int n,
  49. const StatType aType);
  50. static int GetIndexByName(char* aName, TRoleList* aList, int aListSize);
  51. static void RoleDataCopy(TRoleList* Desc, TRoleData* Source);//把RoleData有用的结构复制到RoleList结构中
  52. static char* LoadFilterName(); //取得要过滤的用户名列表 二维数组 [最大名字长度20][数目]
  53. static bool IsRoleFilter(char* aName, char* aList); //过滤某些角色
  54. private:
  55. HANDLE m_hThread; 
  56. HANDLE m_hManualThread; 
  57. static void Backup(); //备份和写入统计数据
  58. static void MakeSendStatData(); //生成发送给客户端的统计数据结构
  59. static DWORD WINAPI TimerThreadFunc( LPVOID lpParam ); //备份计时线程
  60. static DWORD WINAPI ManualThreadFunc( LPVOID lpParam ); //手工备份线程
  61. public:
  62. CDBBackup(char* aPath, char* aName, ZDBTable* aRunTable);
  63. virtual ~CDBBackup(){};
  64. bool Open(int aTime); //启动备份计时
  65. bool Suspend(); //挂起
  66. bool Resume(); //继续执行线程
  67. bool Close(); //关闭
  68. TGAME_STAT_DATA GetSendStatData(); //取得发送给客户端的统计数据结构
  69. bool IsWorking(); //线程是否在工作
  70. bool IsBackuping(); //备份是否在工作
  71. bool ManualBackup(); //手工备份
  72. void SaveStatInfo(); //把游戏世界等级排名写到指定玩家角色中
  73. };
  74. #endif // !defined(DBBACKUP_H)