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

模拟服务器

开发平台:

C/C++

  1. /********************************************************************
  2. created: 2003/02/14
  3. file base: IOCompletionPort
  4. file ext: h
  5. author: liupeng
  6. purpose: Header file for CIOCompletionPort routines
  7. *********************************************************************/
  8. #ifndef __INCLUDE_IOCOMPLETIONPORT_H__
  9. #define __INCLUDE_IOCOMPLETIONPORT_H__
  10. #ifndef _WINDOWS_
  11. #define WIN32_LEAN_AND_MEAN
  12. #include <windows.h>
  13. #undef WIN32_LEAN_AND_MEAN
  14. #endif
  15. /*
  16.  * namespace OnlineGameLib::Win32
  17.  */
  18. namespace OnlineGameLib {
  19. namespace Win32 {
  20. /*
  21.  * CIOCompletionPort
  22.  */
  23. class CIOCompletionPort
  24. {
  25. public:
  26.    
  27. explicit CIOCompletionPort( size_t maxConcurrency );
  28. ~CIOCompletionPort();
  29. void AssociateDevice( HANDLE hDevice, ULONG_PTR completionKey );
  30. void PostStatus( ULONG_PTR completionKey, 
  31. DWORD dwNumBytes = 0, 
  32. OVERLAPPED *pOverlapped = 0 );
  33. DWORD GetStatus( ULONG_PTR *pCompletionKey, 
  34. PDWORD pdwNumBytes,
  35. OVERLAPPED **ppOverlapped );
  36. DWORD GetStatus( ULONG_PTR *pCompletionKey, 
  37. PDWORD pdwNumBytes,
  38. OVERLAPPED **ppOverlapped, 
  39. DWORD dwMilliseconds );
  40. private:
  41.       
  42. HANDLE m_iocp;
  43. /*
  44.  * No copies do not implement
  45.  */
  46. CIOCompletionPort( const CIOCompletionPort &rhs );
  47. CIOCompletionPort &operator=( const CIOCompletionPort &rhs );
  48. };
  49. } // End of namespace OnlineGameLib
  50. } // End of namespace Win32
  51. #endif //__INCLUDE_IOCOMPLETIONPORT_H__