#pragma once
class CServiceBase
{
public:
CServiceBase();
virtual ~CServiceBase();
public:
virtual bool Run();
virtual bool Start();
virtual void Stop();
public:
virtual void OnStart();
virtual void OnTick();
virtual void OnStop();
protected:
bool m_bRunning;
};
#include "ServiceBase.h"
#include <iostream>
#include <thread>
const int ServiceTickInterval = 50;
int LogInfo(std::string info)
{
std::cout << info.c_str() << std::endl;
return 0;
}
CServiceBase::CServiceBase()
: m_bRunning(false)
{
}
CServiceBase::~CServiceBase()
{
}
bool CServiceBase::Run()
{
LogInfo("ServiceBase Run");
while (m_bRunning)
{
std::this_thread::sleep_for(std::chrono::milliseconds(ServiceTickInterval));
OnTick();
}
return true;
}
bool CServiceBase::Start()
{
LogInfo("ServiceBase Start");
m_bRunning = true;
OnStart();
Run();
return false;
}
void CServiceBase::Stop()
{
LogInfo("ServiceBase Stop");
m_bRunning = false;
}
void CServiceBase::OnStart()
{
LogInfo("ServiceBase OnStart");
}
void CServiceBase::OnTick()
{
LogInfo("ServiceBase Tick");
}
void CServiceBase::OnStop()
{
LogInfo("ServiceBase OnStop");
}
#include <iostream>
#include "ServiceBase.h"
int main(){
CServiceBase svr;
svr.Start();
return 0;
}
ServiceBase Start
ServiceBase OnStart
ServiceBase Run
ServiceBase Tick
ServiceBase Tick
...