【云备份】客户端模块

33. 客户端数据管理模块实现-数据信息设计

客户端要实现的功能是对指定文件夹中的文件自动进行备份上传。但是并不是所有的文件每次都需要上传,我们需要能够判断,哪些文件需要上传,哪些不需要,因此需要将备份的文件信息给管理起来,作为下一次文件是否需要备份的判断。因此需要被管理的信息包含以下:

  • 文件路径名称
  • 文件唯一标识:由文件名,最后一次修改时间,文件大小组成的一串信息
34. 客户端文件检测模块实现-文件操作实用类设计

这个其实与服务端的文件实用工具类雷同,只是功能需求并没有服务端那么多,复制过来即可。

namespace fs = std::experimental::filesystem;
class FileUtil {
    private:
    	std::string _name;
    public:
        FileUtil(const std::string &name) :_name(name) {}
        size_t FileSize();
        time_t LastATime();
        time_t LastMTime();
        std::string FileName();
        bool GetPosLen(std::string *content, size_t pos, size_t len);
        bool GetContent(std::string *content);
        bool SetContent(const std::string &content);
    	bool Exists();
    	bool CreateDirectory();
        bool ScanDirectory(std::vector<std::string> *arry);
};
35. 客户端数据管理模块实现-数据管理类设计
class DataManager{
	private:
		std::unordered_map<std::string, std::string> _table;
    	std::string _back_file;
    public:
    	DataManager(const std::string back_file);
    	bool InitLoad();//程序运行时加载以前的数据
    	bool Storage();//持久化存储
    	bool Insert(const std::string &key, const std::string &val);
    	bool Update(const std::string &key, const std::string &val);
    	bool GetOneByKey(const std::string &key, std::string *val);
};
36. 客户端文件备份模块实现-文件备份类设计
#define SRV_IP "192.168.X.X"
#define SRV_PORT 9000
class BackUp {
		private:
			DataManager *_data;
			std::string _back_dir;
			std::string _back_file;
		public:
			BackUp(const std::string &back_dir, const std::string &back_file)
                : _back_dir(back_dir)
				, _back_file(back_file){}
			std::string GetFileIdentifier(const std::string &filename);
			bool Upload(const std::string &filename);
			bool IsCanBeUpload(const std::string &filename);
			bool RunModule();
	};
  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值