【lesson4】服务端配置信息模块实现
文章目录
- 设计服务端系统配置信息
- 配置信息模块实现
- 成员变量
- 成员函数的实现
- 单例接口的提供
- 加载配置文件信息
- 实现获取配置文件信息的接口
设计服务端系统配置信息
使用文件配置加载一些程序的运行关键信息可以让程序的运行更加灵活。
配置信息:
- 热点判断时间
- 文件下载URL前缀路径
- 压缩包后缀名称
- 上传文件存放路径
- 压缩文件存放路径
- 服务端备份信息存放文件
- 服务器访问 IP 地址
- 服务器访问端口
{"hot_time" : 30, "server_port" : 8080,"server_ip" : "192.168.121.132",//设计自己服务器的ip"download_prefix" : "/download/","packfile_suffix" : ".lz","pack_dir" : "./packdir/","back_dir" : "./backdir/","manager_file" : "./back.dat"
}
配置信息模块实现
成员变量
private:static Config* _instance;//设计成单例模式,全局只初始化一个static std::mutex _mtx;//存在多线程或者多进程访问的肯,需要加锁
private:int _hot_time;//热点时间int _server_port;//服务端端口号std::string _server_ip;//服务端IPstd::string _download_prefix;//下载文件的前缀std::string _packfile_suffix;//压缩文件的后缀std::string _pack_dir;//保存压缩的目录路径std::string _back_dir;//保存备份文件的目录路径std::string _backup_file;//保存备份文件信息
成员函数的实现
private:Config(){ReadConfigFile();}bool ReadConfigFile()//加载配置文件的信息到类中{}public:static Config* getIstance()//提供单例获取接口{}int getHotTime()//获取热点时间{}int getServerPort()//获取服务端端口{}std::string getServerIp()//获取服务端IP{}std::string getDownloadPrefix()//获取下载前缀{}std::string getPackfileSuffix()//获取备份后缀{}std::string getPackDir()//获取压缩目录路径{}std::string getBackDir()//获取备份目录路径{}std::string getBackupFile()//获取保存备份文件信息的文件路径{}
单例接口的提供
static Config* getIstance()
{//外层for循环式为了减少加锁解锁的次数,提高效率if(_instance == nullptr){_mtx.lock();if(_instance == nullptr){_instance = new Config();}_mtx.unlock();}return _instance;
}
加载配置文件信息
配置文件信息的存储格式,是以Json的存储格式保存的
bool ReadConfigFile()
{//1.读取配置文件内容fileUtil fu(CONFIG_FILE);std::string body; bool ret = fu.getContent(&body);if(ret == false){std::cout << "ReadConfigFile getContent faile" << std::endl;}//2.对内容进行反序列化Json::Value root;ret = cloud::JsonUtil::UnSerialize(body, &root);if(ret == false){std::cout << "ReadConfigFile UnSerialize faile" << std::endl;}//保存配置文件信息到类成员变量中_hot_time = root["hot_time"].asInt();_server_port = root["server_port"].asInt();_server_ip = root["server_ip"].asString();_download_prefix = root["download_prefix"].asString();_packfile_suffix = root["packfile_suffix"].asString();_pack_dir = root["pack_dir"].asString();_back_dir = root["back_dir"].asString();_backup_file = root["backup_file"].asString();}
实现获取配置文件信息的接口
int getHotTime()
{return _hot_time;
}
int getServerPort()
{return _server_port;
}
std::string getServerIp()
{return _server_ip;
}
std::string getDownloadPrefix()
{return _download_prefix;
}
std::string getPackfileSuffix()
{return _packfile_suffix;
}
std::string getPackDir()
{return _pack_dir;
}
std::string getBackDir()
{return _back_dir;
}
std::string getBackupFile()
{return _backup_file;
}