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

模拟服务器

开发平台:

C/C++

  1. //////////////////////////////////////////////////////////////////////////////////////
  2. // 文件名 : KNewProtocolProcess.h
  3. // 创建人 : 王西贝
  4. // 创建时间 : 2003-7-14 13:17:29
  5. // 文件说明 : 针对单个Account的新协议的处理
  6. //////////////////////////////////////////////////////////////////////////////////////
  7. #ifndef __KNEWPROTOCOLPROCESS_H__
  8. #define __KNEWPROTOCOLPROCESS_H__
  9. #ifndef _STANDALONE
  10. #include <map>
  11. #include <list>
  12. #include "../../MultiServer/Common/Library.h"
  13. #include "../../MultiServer/Common/Buffer.h"
  14. #else
  15. #include "zport.h"
  16. #endif
  17. #ifdef _STANDALONE
  18. class IClient;
  19. #else
  20. struct IClient;
  21. #endif
  22. class KNewProtocolProcess
  23. {
  24. protected:
  25. typedef void (*FUN_PROCESS_NEW_PROTOCOL)(IClient* pTransfer,
  26.   DWORD dwFromIP, DWORD dwFromRelayID,
  27.   int nPlayerIndex, BYTE *pData, int nDataSize);
  28. typedef std::map<WORD, FUN_PROCESS_NEW_PROTOCOL> NEW_PROTOCOL_HASH;
  29. typedef std::list<OnlineGameLib::Win32::CBuffer *> DATAList;
  30. DATAList m_theTransList;
  31. DATAList m_theChatList;
  32. DATAList m_theTongList;
  33. OnlineGameLib::Win32::CBuffer::Allocator m_theAllocator;
  34. public:
  35. KNewProtocolProcess();
  36. ~KNewProtocolProcess();
  37. //protected:
  38. NEW_PROTOCOL_HASH m_ProtocolTable;
  39. static void P_ProcessGMExecute(IClient* pTransfer,
  40.    DWORD dwFromIP, DWORD dwFromRelayID,
  41.    int nPlayerIndex, BYTE* pData, int nDataSize);
  42. static void P_ProcessGMFindPlayer(IClient* pTransfer,
  43.    DWORD dwFromIP, DWORD dwFromRelayID,
  44.    int nPlayerIndex, BYTE* pData, int nDataSize);
  45. static void P_ProcessPlayerCommExtend(IClient* pTransfer,
  46.    DWORD dwFromIP, DWORD dwFromRelayID,
  47.    int nPlayerIndex, BYTE* pData, int nDataSize);
  48. static void P_ProcessChatExtend(IClient* pTransfer,
  49.    DWORD dwFromIP, DWORD dwFromRelayID,
  50.    int nPlayerIndex, BYTE* pData, int nDataSize);
  51. public:
  52. void ProcessNetMsg(IClient* pTransfer, DWORD dwFromIP, DWORD dwFromRelayID,
  53.    int nPlayerIndex, BYTE* pData, int nDataSize);
  54. void SendNetMsgToTransfer(IClient* pClient);
  55. void SendNetMsgToChat(IClient* pClient);
  56. void SendNetMsgToTong(IClient* pClient);
  57. void PushMsgInTransfer(const void * const pData, const size_t datalength);
  58. void PushMsgInChat(const void * const pData, const size_t datalength);
  59. void PushMsgInTong(const void * const pData, const size_t datalength);
  60. //给所有服务器的每个人发送某个协议,向上发到Relay的
  61. void BroadcastGlobal(const void * const pData, const size_t datalength);
  62. //给本服务器的每个人发送某个协议,向下直接发到客户的
  63. void BroadcastLocalServer(const void * const pData, const size_t datalength);
  64. //在本服务器的范围执行某个协议
  65. void ExecuteLocalServer(const void * const pData, const size_t datalength);
  66. };
  67. extern KNewProtocolProcess g_NewProtocolProcess;
  68. #endif //__KNEWPROTOCOLPROCESS_H__