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

模拟服务器

开发平台:

C/C++

  1. #include "KCore.h"
  2. #include "KWorldMsg.h"
  3. //KWorldMsg g_WorldMsg;
  4. BOOL KWorldMsg::Get(KWorldMsgNode *pMsg)
  5. {
  6. KWorldMsgNode* pNode = NULL;
  7. pNode = (KWorldMsgNode *)m_LocalMsgQueue.GetHead();
  8. if (pNode)
  9. {
  10. pMsg->m_dwMsgType = pNode->m_dwMsgType;
  11. memcpy(pMsg->m_nParam, pNode->m_nParam, sizeof(pNode->m_nParam));
  12. pNode->Remove();
  13. if (pNode)
  14. {
  15. delete pNode;
  16. pNode = NULL;
  17. }
  18. return TRUE;
  19. }
  20. else
  21. {
  22. return FALSE;
  23. }
  24. }
  25. BOOL KWorldMsg::Peek(KWorldMsgNode *pMsg, DWORD nNext /* = 0 */)
  26. {
  27. KWorldMsgNode* pNode = NULL;
  28. pNode = (KWorldMsgNode *)m_LocalMsgQueue.GetHead();
  29. while(nNext && pNode)
  30. {
  31. pNode = (KWorldMsgNode *)pNode->GetNext();
  32. nNext--;
  33. }
  34. if (pNode)
  35. {
  36. pMsg->m_dwMsgType = pNode->m_dwMsgType;
  37. memcpy(pMsg->m_nParam, pNode->m_nParam, sizeof(pNode->m_nParam));
  38. return TRUE;
  39. }
  40. else
  41. return FALSE;
  42. }
  43. void KWorldMsg::Clear()
  44. {
  45. KWorldMsgNode *pNode, *pNextNode;
  46. pNode = (KWorldMsgNode *)m_LocalMsgQueue.GetHead();
  47. pNextNode = pNode;
  48. while(pNextNode)
  49. {
  50. pNextNode = (KWorldMsgNode *)pNode->GetNext();
  51. m_LocalMsgQueue.RemoveHead();
  52. if (pNode)
  53. delete pNode;
  54. pNode = pNextNode;
  55. }
  56. }