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

模拟服务器

开发平台:

C/C++

  1. //-----------------------------------------//
  2. //                                         //
  3. //  File : S3PDBSocketPool.h    //
  4. // Author : Yang Xiaodong            //
  5. // Modified : 8/26/2002                //
  6. //                                         //
  7. //-----------------------------------------//
  8. #ifndef _S3PDBSOCKETPOOL_H_
  9. #define _S3PDBSOCKETPOOL_H_
  10. #include "KThread.h"
  11. #include <map>
  12. #include "GlobalDTD.h"
  13. #include "S3PDBConVBC.h"
  14. #include <list>
  15. #include "../S3AccServer/AccountLoginDef.h"
  16. using namespace std;
  17. interface IServer;
  18. class S3PDBConVBC;
  19. class S3PDBSocketPool;
  20. class KGatewayDataProcess : public KThread_CS
  21. {
  22. public:
  23. KGatewayDataProcess(unsigned long nID, unsigned long Address, short Port);
  24. ~KGatewayDataProcess();
  25. std::string m_ServerName;
  26. unsigned long m_nGameID;
  27. unsigned long m_Address; //服务器域名地址
  28. unsigned long m_nClientID;
  29. virtual BOOL Stop();
  30. virtual HANDLE Start(IServer* pServer);
  31. protected:
  32. S3PDBConVBC* m_pConn;
  33. S3PDBConVBC* GetDB(DWORD nSleep);
  34. void Close();
  35. void AutoTime();
  36. BOOL CheckConnectAddress();
  37. void ProcessClientData(const void * pData, DWORD dwDataSize);
  38. short m_Port; //服务器端口号
  39. HANDLE m_hClosed;
  40. DWORD ProcessData(S3PDBConVBC* pConn, const void* pData, DWORD dwDataSize);
  41. BOOL ProRelayVerify(S3PDBConVBC* pConn, const IBYTE* lpData, const DWORD dwDataSize);
  42. BOOL ProRelayClose(S3PDBConVBC* pConn, const IBYTE* lpData, const DWORD dwDataSize);
  43. BOOL ProRelayInfo(S3PDBConVBC* pConn, const IBYTE* lpData, const DWORD dwDataSize);
  44. BOOL ProAccountLogout(S3PDBConVBC* pConn, const IBYTE* lpData, const DWORD dwDataSize);
  45. BOOL ProGameLogin(S3PDBConVBC* pConn, const IBYTE* lpData, const DWORD dwDataSize);
  46. BOOL ProAutoTime(S3PDBConVBC* pConn);
  47. BOOL ProGMFamily(S3PDBConVBC* pConn, const IBYTE* lpData, const DWORD dwDataSize);
  48. BOOL ProRelayAskData(S3PDBConVBC* pConn, const IBYTE* lpData, const DWORD dwDataSize);
  49. BOOL ProRelayIPData(const IBYTE* lpData, const DWORD dwDataSize);
  50. HANDLE m_hStartAutoTime;
  51. DWORD m_LastMoneyTime;
  52. DWORD m_LastPingTime;
  53. BOOL IsStartAutoTime();
  54. BOOL StartAutoTime();
  55. void ExecuteAction(char* szAccount, char* szScript);
  56. void ExecuteAction(char* szScript); //广播执行脚本
  57. void SendSystemInfo(unsigned long uID, char* szAccount, char *lpszSendName, char *lpszSentence, int nSentenceLength);
  58. DWORD Main(LPVOID lpParam);
  59. IServer* m_pServer;
  60. };
  61. typedef map<unsigned long, KGatewayDataProcess*> GatewayIDMap;
  62. class S3PDBSocketPool : public K_CS
  63. {
  64. public:
  65. static S3PDBSocketPool* Instance();
  66. static void ReleaseInstance();
  67. virtual ~S3PDBSocketPool();
  68. static DWORD m_SelfAddress;
  69. virtual BOOL Stop();
  70. virtual HANDLE Start(IServer* pServer);
  71. BOOL AddUserClientID(unsigned long uID);
  72. BOOL RemoveUserClientID(unsigned long uID);
  73. BOOL ShowAllClientInfo();
  74. BOOL StopAllUserClientConnect();
  75. BOOL FindGatewayByServerName(const char* szServerName, DWORD& nGameID);
  76. KGatewayDataProcess* FindGatewayByID(unsigned long nGameID);
  77. BOOL FindGatewayClientByAddress(DWORD nAddress, DWORD& nClientID);
  78. void BroadGMData(const IBYTE* lpData, const DWORD dwDataSize);
  79. void NotifyRelayLoginInfo(DWORD nGameID, DWORD nClientID, DWORD Address, const std::string& ServerName);
  80. void NotifyRelayLogoutInfo(DWORD Address, const std::string& ServerName);
  81. BOOL SendData(unsigned long uID, const void * const pData, const size_t &datalength);
  82. BOOL CustomSend(unsigned long uID, char nProtocol, KAccountHead* pSend);
  83. void SendRelayData(unsigned long uID, char* szAccount, const void * const pSrcData1, const size_t& datalength1, const void * const pSrcData2, const size_t& datalength2);
  84. void SendRelayData(unsigned long uID, const void * const pSrcData1, const size_t& datalength1, const void * const pSrcData2, const size_t& datalength2);
  85. protected:
  86. S3PDBSocketPool();
  87. GatewayIDMap m_clientIDs;
  88. static S3PDBSocketPool* m_pInstance;
  89. IServer* m_pServer;
  90. };
  91. #endif // _S3PDBSOCKETPOOL_H_