Backup.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. #ifndef __CSC_BACKUP_H_
  2. #define __CSC_BACKUP_H_
  3. #include <vector>
  4. #include "BackupInterface.h"
  5. #include "BackupListMgr.h"
  6. typedef struct SPhotoPathInfo
  7. {
  8. DWORD dwFileSize; //文件大小
  9. CString strRootDir; //主目录,如:\\127.0.0.1\客户原片(管理软件)$
  10. CString strChildDir; //子目录,如:1234.ly.com\\20151010-001\\新生儿
  11. CString strAllPath; //全路径,如:\\127.0.0.1\客户原片(管理软件)$\1234.ly.com\\20151010-001\\新生儿\001.jpg
  12. CString strFile; //文件,如:001.jpg
  13. }SPHOTOPATHINFO, *LPSPHOTOPATHINFO;
  14. class CSC_Backup : public ISC_BackupInterface
  15. {
  16. public:
  17. CSC_Backup();
  18. virtual ~CSC_Backup();
  19. STDMETHODIMP QueryInterface(REFIID, void**);
  20. STDMETHODIMP_(ULONG) AddRef(void);
  21. STDMETHODIMP_(ULONG) Release(void);
  22. //用于增量备份
  23. virtual BOOL WINAPI InitBackupInfo(
  24. IN LPCTSTR lpDomain, // 店域名
  25. IN LPCTSTR lpOrderNum, // 订单号
  26. IN LPCTSTR lpOptTime, // 操作时间
  27. IN LPCTSTR lpPhotos, // 要备份的相片名集合
  28. IN LPCTSTR lpDest, // 备份的目标目录,如:\\\\127.0.0.1\\客户原片备份(管理软件)$
  29. IN const BYTE byPhotoType, // 相片类型
  30. IN const BOOL bBakMImage // 是否备份m图
  31. );
  32. //用于备份某订单所有相片
  33. virtual BOOL WINAPI InitBackupInfo(
  34. IN LPCTSTR lpDomain, // 店域名
  35. IN LPCTSTR lpOrderNum, // 订单号
  36. IN LPCTSTR lpDest, // 备份的目标目录,如:\\\\127.0.0.1\\客户原片备份(管理软件)$
  37. IN const BYTE byPhotoType, // 相片类型
  38. IN const BOOL bBakMImage // 是否备份m图
  39. );
  40. /*
  41. //添加共享目录数据
  42. virtual BOOL WINAPI AddShareDirData(
  43. IN LPCTSTR lpDir, // 需备份的共享目录
  44. IN const BYTE byPhotoType, // 相片类型
  45. IN const BYTE byMaxCapacity, // 最大容量
  46. IN const BYTE byPriority // 优先级
  47. );
  48. */
  49. virtual BOOL WINAPI InitShareDirData(
  50. IN const BOOL bEnable, //是否可用
  51. IN LPCTSTR lpBranchId, //域名
  52. IN LPCTSTR lpShareDir, //共享目录
  53. IN const BYTE byMinCapacity, //最小容量
  54. IN const BYTE byMaxCapacity, //最大容量
  55. IN const BYTE byPhotoType, //相片类型
  56. IN const BYTE byPriority //优先级
  57. );
  58. virtual int WINAPI StartBackup(IN LPCTSTR lpLocalDomain, IN PFCALLBACK callbackfun/*回调函数通知备份完成*/);
  59. virtual void WINAPI TerminateBackup();
  60. virtual BOOL WINAPI IsBackup();
  61. void BackupWork();
  62. private:
  63. int FilteringFileInDir(
  64. IN const CString& strDir,
  65. IN const CString& strDomain,
  66. IN const CString& OrderNum,
  67. IN const CString& strOptTime,
  68. IN std::vector<TCHAR*>& vFileName,
  69. OUT std::vector<TCHAR*>& vChildDir,
  70. OUT std::vector<LPSPHOTOPATHINFO>& vPaths);
  71. int FilteringFileInDir(
  72. IN const CString& strDir,
  73. IN const CString& strDomain,
  74. IN const CString& OrderNum,
  75. IN const BOOL bBakMImage,
  76. OUT CString& strOptTime,
  77. OUT std::vector<TCHAR*>& vChildDir,
  78. OUT std::vector<LPSPHOTOPATHINFO>& vPaths);
  79. //分割相片名字串如:001|002|003|
  80. void SplitPhotos(IN CString& strPhotos, IN const BOOL bBakMImage, OUT std::vector<TCHAR*>& vPhotoName);
  81. BOOL CheckMultiLevDir(IN LPCTSTR lpDir, IN LPCTSTR lpChild);
  82. void ClearObjVector(std::vector<LPSPHOTOPATHINFO>& vPhotoPath);
  83. void ClearStringVector(std::vector<TCHAR*>& vData);
  84. //获取磁盘容量
  85. int FindEnableBakDir(IN const BYTE nPhotoType, OUT CString& strTargetDir);
  86. BOOL GetDiskSpaceInfo(IN LPCTSTR lpRootPathName, IN OUT double &dTotalNum, IN OUT double &dFreeNum);
  87. //BOOL GetEnableShareDirectory(IN LPCTSTR lpDir, IN BYTE byMaxCapacity, IN BYTE byPriority, OUT double &dFreeNum);
  88. void ClearShareDir();
  89. private:
  90. BackupListMgr m_InfoList;
  91. LPSBAKINFO m_lpCurrBakInfo; //当前添加的备份信息
  92. std::vector<LPTblNetShareInfo> m_vShareDir; //共享目录
  93. DWORD m_dwRefCount;
  94. HANDLE m_hThread; //线程
  95. HANDLE m_hEvent; //退出事件
  96. BOOL m_bRunning; //是否正在运行
  97. TCHAR m_szLocalDomain[64]; //本地域名
  98. PFCALLBACK m_PFCallBack; //回调
  99. };
  100. #endif