blob: d4cea18c47939a281ec182e789fb28174afbf980 [file] [log] [blame]
#ifndef _WELS_THREAD_POOL_TEST_H_
#define _WELS_THREAD_POOL_TEST_H_
#include "WelsLock.h"
#include "WelsThreadPool.h"
using namespace WelsCommon;
class CThreadPoolTest : public IWelsTaskSink {
public:
CThreadPoolTest() {
m_iTaskCount = 0;
}
~CThreadPoolTest() {}
virtual int32_t OnTaskExecuted (IWelsTask* pTask) {
WelsCommon::CWelsAutoLock cAutoLock (m_cTaskCountLock);
m_iTaskCount ++;
//fprintf(stdout, "Task execute over count is %d\n", m_iTaskCount);
return cmResultSuccess;
}
virtual int32_t OnTaskCancelled (IWelsTask* pTask) {
WelsCommon::CWelsAutoLock cAutoLock (m_cTaskCountLock);
m_iTaskCount ++;
//fprintf(stdout, "Task execute cancelled count is %d\n", m_iTaskCount);
return cmResultSuccess;
}
virtual int32_t OnTaskExecuted() {
WelsCommon::CWelsAutoLock cAutoLock (m_cTaskCountLock);
m_iTaskCount ++;
//fprintf(stdout, "Task execute over count is %d\n", m_iTaskCount);
return cmResultSuccess;
}
virtual int32_t OnTaskCancelled() {
WelsCommon::CWelsAutoLock cAutoLock (m_cTaskCountLock);
m_iTaskCount ++;
//fprintf(stdout, "Task execute cancelled count is %d\n", m_iTaskCount);
return cmResultSuccess;
}
int32_t GetTaskCount() {
return m_iTaskCount;
}
private:
int32_t m_iTaskCount;
WelsCommon::CWelsLock m_cTaskCountLock;
};
class CSimpleTask : public IWelsTask {
public:
static uint32_t id;
CSimpleTask (WelsCommon::IWelsTaskSink* pSink) : IWelsTask (pSink) {
m_uiID = id ++;
}
virtual ~CSimpleTask() {
}
virtual int32_t Execute() {
uint32_t uiSleepTime = (m_uiID > 99) ? 10 : m_uiID;
WelsSleep (uiSleepTime);
//printf ("Task %d executing\n", m_uiID);
return cmResultSuccess;
}
private:
uint32_t m_uiID;
};
#endif