📄 warsvrwin32ntenginetask.cpp
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -