3 简单服务框架

首先实现一个服务基类,定义好服务需要的基本接口。

Start()函数用来启动服务,启动前,在OnStart里做一些预处理;

Run()函数执行服务主循环,保证服务一直运行,并在合适的时机停止。

Stop()函数用来停止服务,停止前,可以在OnStop()函数中执行资源回收,数据保存和清理工作。

代码实现如下

#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;
};

这里稍微注意下,LogInfo函数中,只有一行语句,调用std::cout,增加LogInfo函数的目的,是方便后期替换为真正的日志输出函数,前期为了简便,直接通过控制台显示。

这是一个编程的小技巧:有多处使用系统函数或API接口的调用,尽量封装一个函数,可以避免后期需求变更时,全局搜索替换

最后主函数调用

编译运行,可以看到控制台输出

现在一个最基本的服务框架就完成了,服务运行后,可以每隔50毫秒执行一次OnTick函数,在这个函数中可以添加自己的逻辑。

下一章,我们增加网络消息收发功能,使服务具备网络交互能力。

Last updated