msglist.h
上传用户:sycq158
上传日期:2008-10-22
资源大小:15361k
文件大小:2k
源码类别:

游戏

开发平台:

Visual C++

  1. #ifndef _ASIDER_TANK_ALPHA3_MSGLIST_H_
  2. #define _ASIDER_TANK_ALPHA3_MSGLIST_H_
  3. #define MAXLIST 256
  4. #define INCSTEP 32
  5. //-----------------------------------------------------------------------------
  6. // Classes defined in this header file 
  7. //-----------------------------------------------------------------------------
  8. class CMsgElem;
  9. class CMsgList;
  10. //-----------------------------------------------------------------------------
  11. // Name: class CMsgList
  12. // Desc: Class to handle messages using List structrue
  13. //-----------------------------------------------------------------------------
  14. class CMsgList
  15. {
  16. CMsgElem **m_ppElems;
  17. int m_nSize;
  18. int m_nHead;
  19. int m_nTail;
  20. int m_nTotal;
  21. int m_nMax;
  22. bool m_bSync;
  23.  
  24. public:
  25.     CMsgList();
  26.     ~CMsgList();
  27.     // Access functions
  28. void Lock();
  29. void UnLock();
  30. int GetSize() { return m_nSize; }
  31. int GetRemain() { return m_nTotal; }
  32. void SetMax( int max ) { m_nMax = max; }
  33.     // Status functions
  34. bool IsSync() { return m_bSync; }
  35. bool IsFull() { return m_nTotal == m_nSize; }
  36. bool IsEmpty() { return m_nTotal == 0; }
  37. bool NotInit() { return m_ppElems == NULL; }
  38.   
  39.     // Creation/destruction methods
  40. bool CreatMsgList( unsigned int size, bool sync );
  41. void DestroyList();
  42.     
  43. // List methods
  44. CMsgElem *Peek();
  45. CMsgElem *Pop();
  46. bool Push( const CMsgElem *pelem );
  47. bool EnlargeSize();
  48. };
  49. //-----------------------------------------------------------------------------
  50. // Name: class CMsgElem
  51. // Desc: Class to store a message's infomations
  52. //-----------------------------------------------------------------------------
  53. class CMsgElem
  54. {
  55. friend class CMsgList;
  56. protected:
  57. int m_nMsg;
  58. DWORD m_dwMsgType;
  59. char *m_psBuffer;
  60. int m_nParamSize;
  61. public:
  62.     CMsgElem();
  63.     ~CMsgElem();
  64.     // Access functions
  65. int GetMsg() { return m_nMsg; }
  66. DWORD GetMsgType() { return m_dwMsgType; }
  67. int GetParamSize() { return m_nParamSize; }
  68. LPCSTR GetParam() { return m_psBuffer; }
  69.     // Status functions
  70. bool IsParamAvailable() { return m_nParamSize>0; }
  71.     // Creation/destruction methods
  72. bool CreateMsgElem( int msg, LPCSTR param,int size, DWORD type );
  73. bool CreateMsgElemFromBuf( LPCSTR buf, int &size, DWORD type );
  74. // Methods
  75. };
  76. #endif //_ASIDER_TANK_ALPHA3_MSGLIST_H_