📄 qtask.cpp
字号:
//---------------------------------------------------------------------------
#pragma hdrstop
#include "QTask.h"
#include "QStdlib.h"
#include <assert.h>
#pragma package(smart_init)
using namespace N_QTask;
//---------------------------------------------------------------------------
IQTask* __stdcall IQTask::Create(int TimeOutMs)
{
return new QTask(TimeOutMs);
}
//---------------------------------------------------------------------------
__stdcall QTask::QTask(int TimeOutMs)
: IQTask()
, m_IDMaker(910001)
, m_TimeOut(TimeOutMs)
{
}
//---------------------------------------------------------------------------
__stdcall QTask::~QTask()
{
}
//---------------------------------------------------------------------------
void __stdcall QTask::Release(void)
{
assert(this);
delete this;
}
//---------------------------------------------------------------------------
__int64 __stdcall QTask::CreateTask(const std::string& Data)
{
TaskItem Item;
Item.Time = GetTick();
Item.Data = Data;
while(m_Item.find(m_IDMaker) == m_Item.end()) {//
if (m_IDMaker <= 0)
return 0;
++ m_IDMaker;
}
m_Item[m_IDMaker] = Item;
++ m_IDMaker;//保证下次不会因最大ID销毁而被重用
return m_IDMaker;
}
//---------------------------------------------------------------------------
std::string __stdcall QTask::GetTask(__int64 TaskID)const
{
const TASK_MAP::const_iterator iter = m_Item.find(TaskID);
if (iter == m_Item.end())
return "";
return iter->second.Data;
}
//---------------------------------------------------------------------------
void __stdcall QTask::SetTask(__int64 TaskID, const std::string& Data)
{
TASK_MAP::iterator iter = m_Item.find(TaskID);
if (iter == m_Item.end())
return;
iter->second.Data = Data;
}
//---------------------------------------------------------------------------
void __stdcall QTask::DestroyTask(__int64 TaskID)
{
m_Item.erase(TaskID);
}
//---------------------------------------------------------------------------
void __stdcall QTask::Process(void)
{
if (-1 == m_TimeOut)
return;
unsigned int CutTime = GetTick();
TASK_MAP::iterator iter = m_Item.begin();
const TASK_MAP::const_iterator iend = m_Item.end();
std::vector<__int64> Del;
for(; iter != iend; ++iter) {
if (GetRealTickDifference(iter->second.Time, CutTime) > (unsigned int)m_TimeOut)
Del.push_back(iter->first);
}
for(unsigned int i = 0; i < Del.size(); ++i) {
m_Item.erase(Del[i]);
}
}
//---------------------------------------------------------------------------
unsigned int __stdcall QTask::GetCount(void)const
{
return m_Item.size();
}
//---------------------------------------------------------------------------
void __stdcall QTask::ProcessIDGC(void)
{
m_IDMaker = 910001;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -