IOCP包裹類
頭文件:/**********************************************************************
* Copyright (C) 2008 - - All Rights Reserved
*
* 文件名稱: IOCP.h
* 摘 要: IOCP包裹類
*
* 作 者: yanglinbo,
* 修 改: 查看文件最下方.
*
***********************************************************************/
#ifndef __IOCP_H__
#define __IOCP_H__
#include <assert.h>
#include <WinSock2.h>
//////////////////////////////////////////////////////////////////////////
/// IOCP包裝類,完成IOCP創建,關聯等動作
//////////////////////////////////////////////////////////////////////////
class CIOCP
{
public:
CIOCP(int nMaxConcurrency = -1);
virtual ~CIOCP(void);
CIOCP& operator = (const CIOCP& rht);
CIOCP& operator = (const HANDLE& rht);
operator HANDLE() const;
/// 創建IOCP
/// @param [in] nMaxConcurrency 最大線程數
BOOL Create(int nMaxConcurrency);
/// 銷毀IOCP
BOOL Destroy();
/// 完全端口是否有效
BOOL IsValid() const;
/// 關聯指定SOCKET及參數到IOCP
/// @param [in] socket
/// @param [in] CompKey
BOOL AssociateSocket(SOCKET socket, ULONG_PTR CompKey);
/// 發送通知到IOCP
/// @param [in] CompKey
/// @param [in] dwNumBytes
/// @param [in] po
BOOL PostStatus(ULONG_PTR CompKey, DWORD dwNumBytes = 0, OVERLAPPED* po = NULL);
/// 取得IOCP狀態
/// @param [in] pCompKey
/// @param [in] pdwNumBytes
/// @param [in] ppo
/// @param [in] dwMilliseconds
BOOL GetStatus(ULONG_PTR* pCompKey, PDWORD pdwNumBytes, OVERLAPPED** ppo, DWORD dwMilliseconds = INFINITE);
private:
HANDLE m_hIOCP; ///< IOCP句柄
};
#endif
* Copyright (C) 2008 - - All Rights Reserved
*
* 文件名稱: IOCP.h
* 摘 要: IOCP包裹類
*
* 作 者: yanglinbo,
* 修 改: 查看文件最下方.
*
***********************************************************************/
#ifndef __IOCP_H__
#define __IOCP_H__
#include <assert.h>
#include <WinSock2.h>
//////////////////////////////////////////////////////////////////////////
/// IOCP包裝類,完成IOCP創建,關聯等動作
//////////////////////////////////////////////////////////////////////////
class CIOCP
{
public:
CIOCP(int nMaxConcurrency = -1);
virtual ~CIOCP(void);
CIOCP& operator = (const CIOCP& rht);
CIOCP& operator = (const HANDLE& rht);
operator HANDLE() const;
/// 創建IOCP
/// @param [in] nMaxConcurrency 最大線程數
BOOL Create(int nMaxConcurrency);
/// 銷毀IOCP
BOOL Destroy();
/// 完全端口是否有效
BOOL IsValid() const;
/// 關聯指定SOCKET及參數到IOCP
/// @param [in] socket
/// @param [in] CompKey
BOOL AssociateSocket(SOCKET socket, ULONG_PTR CompKey);
/// 發送通知到IOCP
/// @param [in] CompKey
/// @param [in] dwNumBytes
/// @param [in] po
BOOL PostStatus(ULONG_PTR CompKey, DWORD dwNumBytes = 0, OVERLAPPED* po = NULL);
/// 取得IOCP狀態
/// @param [in] pCompKey
/// @param [in] pdwNumBytes
/// @param [in] ppo
/// @param [in] dwMilliseconds
BOOL GetStatus(ULONG_PTR* pCompKey, PDWORD pdwNumBytes, OVERLAPPED** ppo, DWORD dwMilliseconds = INFINITE);
private:
HANDLE m_hIOCP; ///< IOCP句柄
};
#endif
cpp文件:

























































































posted on 2012-07-16 18:38 楊粼波 閱讀(1179) 評論(0) 編輯 收藏 引用 所屬分類: 網絡編程 、C++ 、Windows