项目地址: https://github.com/ZsGyao/Z_RPC.git
个人学习写的项目,带有详细注释的C++RPC框架
问题引出:
在开发z_RPC时,为了简化配置项时,创建了一个Config类来保存从配置文件中读出的配置项。
class Config {
...
std::string m_log_path; // 日志存储路径
std::string m_log_prefix; // 日志文件名
int m_log_max_file_size = 0; // 日志单个文件最大大小
LogLevel m_rpc_log_level = LogLevel::DEBUG; // rpc日志级别
LogLevel m_app_log_level = LogLevel::DEBUG; // app日志级别
int m_log_sync_interval = 500; // 异步写入间隔
...
}
由于Config只读一次配置文件就可以保存所有的配置项,所以将Config做成的一个单例。
使用此单例模板:https://blog.csdn.net/weixin_48055768/article/details/129447531?spm=1001.2014.3001.5501
// “config.h”
typedef zrpc::Singleton<Config> Singleton_Conf;
std::share_ptr<Config> zRpcConfig
// "config.cpp
auto zRpcConfig = Singleton_Conf::GetInstance("zrpc_server.xml"); // 获得Config单例
使用extern关键字 声明在头文件中,实现在 .cpp文件里,所有包含头文件的都可以只有全局的单例。
如果在头文件中声明static变量,会出现重定义的编译错误。