Review code
Header file:
#ifndef CBASE_H
#define CBASE_H
#include <string>
class CBaseTask
{
public:
CBaseTask();
~CBaseTask();
void Launch(const std::string sName, int iID, bool bRealtime);
protected:
virtual bool Init() = 0;
virtual bool Execute() = 0;
virtual void Terminate() = 0;
private: // methods
bool BaseInit(const std::string sName, int iID, bool bRealtime);
bool BaseExecute();
void BaseTerminate();
private: // variables
std::string m_strName;
bool m_bRealtime;
int m_iID;
};
#endif // CBASE_H
Source file:
#include "cbasetask.h"
CBaseTask::CBaseTask() {}
CBaseTask::~CBaseTask() {}
void CBaseTask::Launch(const std::string sName, int iID, bool bRealtime)
{
if (BaseInit(sName, iID, bRealtime) == true)
{
if (Init() == true) BaseExecute();
}
BaseTerminate();
}
bool CBaseTask::BaseInit(const std::string sName, int iID, bool bRealtime)
{
m_bRealtime = bRealtime;
m_strName = sName;
m_iID = iID;
// allocate base resources
}
bool CBaseTask::BaseExecute()
{
while(true)
{
if (Execute() == false) return false;
// pause (x seconds)
}
return true;
}
void CBaseTask::BaseTerminate()
{
Terminate();
// release base resources
}
[code]

