• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴(yán)以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            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創(chuàng)建,關(guān)聯(lián)等動(dòng)作
            //////////////////////////////////////////////////////////////////////////
            class CIOCP
            {
            public:
                CIOCP(int nMaxConcurrency = -1);
                virtual ~CIOCP(void);

                CIOCP& operator = (const CIOCP& rht);
                CIOCP& operator = (const HANDLE& rht);

                operator HANDLE() const;

                /// 創(chuàng)建IOCP
                
            /// @param [in] nMaxConcurrency 最大線程數(shù)
                BOOL Create(int nMaxConcurrency);

                /// 銷毀IOCP
                BOOL Destroy();

                /// 完全端口是否有效
                BOOL IsValid() const;

                /// 關(guān)聯(lián)指定SOCKET及參數(shù)到IOCP
                
            /// @param [in] socket
                
            /// @param [in] CompKey
                BOOL AssociateSocket(SOCKET socket, ULONG_PTR CompKey);

                /// 發(fā)送通知到IOCP
                
            /// @param [in] CompKey
                
            /// @param [in] dwNumBytes
                
            /// @param [in] po
                BOOL PostStatus(ULONG_PTR CompKey, DWORD dwNumBytes = 0, OVERLAPPED* po = NULL);

                /// 取得IOCP狀態(tài)
                
            /// @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文件:
            /**********************************************************************
            * Copyright (C) 2008 -  - All Rights Reserved
            *
            * 文件名稱:        IOCP.cpp
            * 摘    要:        IOCP包裹類
            *     
            * 作    者:        yanglinbo, 
            * 修    改:        查看文件最下方.

            **********************************************************************
            */


            #include 
            "StdAfx.h" 
            #include 
            "IOCP.h"


            CIOCP::CIOCP( 
            int nMaxConcurrency /*= -1*/ )
            : m_hIOCP(INVALID_HANDLE_VALUE)
            {
                
            if (nMaxConcurrency != -1)
                
            {
                    Create(nMaxConcurrency);
                }

            }


            CIOCP::
            ~CIOCP( void )
            {
                Destroy();
            }


            CIOCP
            & CIOCP::operator=const CIOCP& rht )
            {
                m_hIOCP 
            = rht.m_hIOCP;
                
            return *this;
            }


            CIOCP
            & CIOCP::operator=const HANDLE& rht )
            {
                m_hIOCP 
            = rht;
                
            return *this;
            }


            CIOCP::
            operator HANDLE() const
            {
                
            return (HANDLE)(this == NULL ? NULL : m_hIOCP);
            }


            BOOL CIOCP::Create( 
            int nMaxConcurrency )
            {
                m_hIOCP 
            = ::CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, nMaxConcurrency);
                ASSERT(IsValid());
                
            return IsValid();
            }


            BOOL CIOCP::Destroy()
            {
                
            if (IsValid() == FALSE) return TRUE;

                BOOL bClosed 
            = ::CloseHandle(m_hIOCP);
                m_hIOCP 
            = INVALID_HANDLE_VALUE;

                
            return bClosed;
            }


            BOOL CIOCP::AssociateSocket( SOCKET socket, ULONG_PTR CompKey )
            {
                ASSERT(IsValid());
                
            if ( IsValid() == FALSE ) return FALSE;
                
            return (::CreateIoCompletionPort((HANDLE)socket, m_hIOCP, CompKey, 0== m_hIOCP);
            }


            BOOL CIOCP::PostStatus( ULONG_PTR CompKey, DWORD dwNumBytes 
            /*= 0*/, OVERLAPPED* po /*= NULL*/ )
            {
                ASSERT(IsValid());
                
            if ( IsValid() == FALSE ) return FALSE;
                
            return ::PostQueuedCompletionStatus(m_hIOCP, dwNumBytes, CompKey, po);
            }


            BOOL CIOCP::GetStatus( ULONG_PTR
            * pCompKey, PDWORD pdwNumBytes, OVERLAPPED** ppo, DWORD dwMilliseconds /*= INFINITE*/ )
            {
                ASSERT(IsValid());
                
            if ( IsValid() == FALSE ) return FALSE;
                
            return ::GetQueuedCompletionStatus(m_hIOCP, pdwNumBytes, pCompKey, ppo, dwMilliseconds);
            }


            BOOL CIOCP::IsValid() 
            const
            {
                
            return (m_hIOCP != NULL) && (m_hIOCP != INVALID_HANDLE_VALUE);
            }

            posted on 2012-07-16 18:38 楊粼波 閱讀(1168) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 網(wǎng)絡(luò)編程C++Windows

            久久国产香蕉一区精品| 久久福利资源国产精品999| 亚洲国产日韩综合久久精品| 国内精品久久久久影院一蜜桃| 久久久噜噜噜久久| 国产精品久久久久jk制服| 久久人人爽人人爽人人片AV高清| 国产精品午夜久久| 久久国产精品77777| 久久香综合精品久久伊人| 久久精品18| 久久精品视频免费| 久久精品天天中文字幕人妻| 国产精品久久久久a影院| 久久精品亚洲欧美日韩久久| 久久久久亚洲av无码专区喷水 | 漂亮人妻被黑人久久精品| 性做久久久久久久久久久| 久久久国产精品| 精品久久久久一区二区三区| 91精品国产91久久久久久青草| 国产综合久久久久久鬼色| 蜜臀av性久久久久蜜臀aⅴ | 国产V亚洲V天堂无码久久久| 伊人久久综合无码成人网| 久久AV高潮AV无码AV| 久久99这里只有精品国产| 无码任你躁久久久久久久| 久久综合九色综合欧美就去吻| 久久伊人中文无码| 一本色道久久综合狠狠躁篇| 久久久午夜精品| 97精品伊人久久久大香线蕉| 亚洲香蕉网久久综合影视| 欧美大香线蕉线伊人久久| 精品久久人妻av中文字幕| 91精品国产综合久久久久久| 久久国产高清字幕中文| 久久婷婷久久一区二区三区| 成人a毛片久久免费播放| 九九热久久免费视频|