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

模拟服务器

开发平台:

C/C++

  1. /********************************************************************
  2. created: 2003/04/08
  3. file base: ICommand
  4. file ext: h
  5. author: liupeng
  6. purpose:
  7. *********************************************************************/
  8. #ifndef __INCLUDE_ICOMMAND_H__
  9. #define __INCLUDE_ICOMMAND_H__
  10. #include "Macro.h"
  11. /*
  12.  * Interface class for execute command
  13.  */
  14. class ICommand
  15. {
  16. public:
  17. virtual UINT Execute() = 0;
  18. virtual ~ICommand(){};
  19. };
  20. /*
  21.  * template classs
  22.  */
  23. template <class Receive>
  24. class CTaskCommand : public ICommand
  25. {
  26. public:
  27. typedef UINT ( Receive::* Action )();
  28. explicit CTaskCommand( Receive *pReceiver, Action pfunAction );
  29. virtual ~CTaskCommand();
  30. virtual UINT Execute();
  31. protected:
  32. CTaskCommand();
  33. /*
  34.  * This function pointer is used to execute command
  35.  */
  36. Action  m_pfunAction;
  37. /*
  38.  * The receiver class
  39.  */
  40. Receive *m_pReceiver;
  41. /*
  42.  * Store a faild value for return it to user when this class was found error
  43.  */
  44. };
  45. template <class Receive>
  46. CTaskCommand<Receive>::CTaskCommand( Receive *pReceiver, Action pfunAction )
  47. : m_pReceiver( pReceiver ), 
  48. m_pfunAction( pfunAction )
  49. {
  50. }
  51. template <class Receive>
  52. CTaskCommand<Receive>::CTaskCommand()
  53. {
  54. ASSERT( FALSE );
  55. }
  56. template <class Receive>
  57. CTaskCommand<Receive>::~CTaskCommand()
  58. {
  59. }
  60. template <class Receive>
  61. UINT CTaskCommand<Receive>::Execute()
  62. {
  63. return ( m_pReceiver->*m_pfunAction )();
  64. }
  65. #endif // __INCLUDE_ICOMMAND_H__