PageRenderTime 47ms CodeModel.GetById 23ms RepoModel.GetById 1ms app.codeStats 0ms

/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
Possible License(s): LGPL-3.0
  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__