warsvrwin32ntenginetask.cpp

来自「ftpserver very good sample」· C++ 代码 · 共 80 行

CPP
80
字号
#include "StdAfx.h"#include "WarSvrWin32NtEngineTask.h"   // class implemented#ifndef WAR_SVR_WIN32_NT_ENGINE_TASK_H#   include "WarSvrWin32NtEngineTask.h"#endif#ifndef WAR_THREAD_FOR_POOL_H#   include "WarThreadForPool.h"#endif#ifndef WAR_SVR_WIN32_NT_ENGINE_H#   include "WarSvrWin32NtEngine.h"#endif/////////////////////////////// PUBLIC /////////////////////////////////////////============================= LIFECYCLE ====================================WarSvrWin32NtEngineTask::WarSvrWin32NtEngineTask(    WarSvrWin32NtEngine& rEngine)    : mrEngine(rEngine){}// WarSvrWin32NtEngineTaskWarSvrWin32NtEngineTask::~WarSvrWin32NtEngineTask(){}// ~WarSvrWin32NtEngineTask//============================= OPERATORS ====================================//============================= OPERATIONS ===================================//============================= ACCESS     ===================================//============================= INQUIRY    ===================================/////////////////////////////// PROTECTED  ///////////////////////////////////void WarSvrWin32NtEngineTask::OnProcessing(WarThreadForPool * pThread){    while(!mpThread->IsExiting())    {        DWORD dwBytes = 0;        DWORD dwKey = 0;        LPOVERLAPPED pol_data = NULL;        DWORD dwError = 0;        BOOL was_successfull = ::GetQueuedCompletionStatus(            mrEngine.GetPort(),             &dwBytes,            &dwKey,             &pol_data,             GetWaitTimeout());        if (pol_data && dwKey)        {            if (!was_successfull)                dwError = ::GetLastError();            // dwKey is pointer to a function that handles the event            ((LPOVERLAPPED_COMPLETION_ROUTINE)dwKey)(dwError,                dwBytes, pol_data);        }        else        {            WarError system_error;            system_error.Capture();            if (system_error.SystemError() != WAIT_TIMEOUT)            {                if (!system_error)                    system_error = WAR_ERR_SYSTEM_CALL_FAILED;                WarThrow(system_error, "GetQueuedCompletionStatus()");            }        }    }}/////////////////////////////// PRIVATE    ///////////////////////////////////

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?