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 + -
显示快捷键?