/src/Modules/FileTransfer/TransferManager.h

https://gitlab.com/yoage/TTWinClient · C Header · 109 lines · 66 code · 12 blank · 31 comment · 0 complexity · 6b16bfec6e5b85291c66ef49865fa1e4 MD5 · raw file

  1. /*******************************************************************************
  2. * @file TransferManager.h 2014\9\3 11:19:29 $
  3. * @author ´ó·ð<dafo@mogujie.com>
  4. * @brief Îļþ´«Êä¹ÜÀí
  5. ******************************************************************************/
  6. #ifndef TRANSFERMANAGER_3046D4C9_3E8D_4C36_93B4_092651F5B66F_H__
  7. #define TRANSFERMANAGER_3046D4C9_3E8D_4C36_93B4_092651F5B66F_H__
  8. #include "utility/TTAutoLock.h"
  9. #include <list>
  10. #include <map>
  11. /******************************************************************************/
  12. class TransferFile;
  13. class FileTransferUIThread;
  14. class TransferFileEntity
  15. {
  16. public:
  17. TransferFileEntity();
  18. public:
  19. UInt32 nPort;
  20. UInt32 nFileSize;
  21. UInt32 nClientMode; //CLIENT_REALTIME_SENDER = 1,CLIENT_REALTIME_RECVER,CLIENT_OFFLINE_UPLOAD,CLIENT_OFFLINE_DOWNLOAD
  22. UInt32 nProgress; //´«Êä½ø¶È
  23. TransferFile* pFileObject; //´«ÊäÎļþ
  24. std::string sFromID;
  25. std::string sTaskID; //ÎļþΨһ±êʾ·û
  26. std::string sToID;
  27. std::string sFileName;
  28. std::string sIP;
  29. std::string sPathOfflineFileOnSev; //ÀëÏßÎļþ´«Êäʱ£¬±£´æÔÚÎļþ·þÎñÆ÷ÉϵÄλÖÃ
  30. UInt32 time; //´«Îļþ·¢Æðʱ¼ä
  31. private:
  32. CString sSavePath; //½ÓÊÕʱ£¬Áí´æÎªµÄµØÖ·
  33. public:
  34. CString getSaveFilePath(); //ÍêÕûµÄ±£´æÎļþ·¾¶
  35. CString getSaveFloderFilePath(); //±£´æµÄÎļþ¼ÐλÖÃ
  36. void setSaveFilePath(const CString& sPath);
  37. CString getRealFileName();
  38. };
  39. typedef std::map<std::string, TransferFileEntity> TransferFileMap;//ȺÁбí
  40. class TransferFileEntityManager
  41. {
  42. public:
  43. ~TransferFileEntityManager();
  44. static TransferFileEntityManager* getInstance();
  45. BOOL pushTransferFileEntity(IN TransferFileEntity& FileInfo);
  46. BOOL getFileInfoByTaskId(IN const std::string& sID, OUT TransferFileEntity& FileInfo);
  47. BOOL DeleteFileInfoByTaskId(IN const std::string& sID);
  48. void getAllTransferFileEntityFileID(std::list<std::string>& fileIdList);
  49. BOOL updateFileInfoBysTaskID(IN const TransferFileEntity& info);
  50. BOOL openFileByFileID(IN const std::string& sID);
  51. BOOL openFileFolderByTaskID(IN const std::string& sID);
  52. BOOL kickMapFileItemToVecFile(IN std::string& sfId);
  53. void pushTransferFileEntityToVec(IN TransferFileEntity& FileInfo);
  54. BOOL checkIfIsSending(IN CString sFilePath);//ÕýÔÚ´«ÊäµÄÎļþ²»ÄÜÔٴδ«Êä
  55. public:
  56. /**@name °üº¬¶à¸öfile socket×ÊÔ´µÄÏß³ÌÏà¹Ø*/
  57. //@{
  58. BOOL startup();
  59. void shutdown();
  60. /**
  61. * ÔÚUI threadÖÐÒì²½´´½¨Îļþ´«Êäsocket
  62. *
  63. * @param std::string & taskId Îļþ´«ÊäÈÎÎñid
  64. * @return void
  65. * @exception there is no any exception to throw.
  66. */
  67. void openFileSocketByTaskId(std::string& taskId);
  68. /**
  69. * ÔÚUI threadÖйرÕÎļþ´«Êäsocket
  70. *
  71. * @param std::string & taskId Îļþ´«ÊäÈÎÎñid
  72. * @return void
  73. * @exception there is no any exception to throw.
  74. */
  75. void closeFileSocketByTaskId(std::string& taskId);
  76. /**
  77. * ÏòÎļþ´«Êä·þÎñÆ÷·¢ËͽÓÊÕÎļþÐÅÁî
  78. *
  79. * @param std::string & taskId
  80. * @return BOOL
  81. * @exception there is no any exception to throw.
  82. */
  83. BOOL acceptFileTransfer(const std::string& taskId);//½ÓÊÜÎļþ´«Êä
  84. BOOL rejectFileTransfer(const std::string& taskId);//¾Ü¾øÎļþ´«Êä
  85. BOOL cancelFileTransfer(const std::string& taskId);//È¡ÏûÎļþ´«Êä
  86. FileTransferUIThread* getFileTransferThread();
  87. //@}
  88. private:
  89. TransferFileEntityManager();
  90. private:
  91. util::TTFastLock m_lock;
  92. TransferFileMap m_MapFile;
  93. std::vector<TransferFileEntity> m_VecFinishedFile; //ÒѾ­´«ÊäÍêµÄÎļþ,ÈκβÙ×÷¹ýµÄÎļþ¶¼»á±»ÈÓµ½ÕâÀï
  94. FileTransferUIThread* m_fileUIThread;
  95. };
  96. /******************************************************************************/
  97. #endif// TRANSFERMANAGER_3046D4C9_3E8D_4C36_93B4_092651F5B66F_H__