DownloadManagerImpl.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #ifndef COMMON_DOWNLOADMANAGERIMPL_H_
  2. #define COMMON_DOWNLOADMANAGERIMPL_H_
  3. #include "DownloadManager.h"
  4. #include "../common/URLEngine/UEFactory.h"
  5. #include <vector>
  6. #include <map>
  7. #include <Windows.h>
  8. using namespace nsURLEngine;
  9. class DownloadManagerImpl :
  10. public DownloadManager,
  11. public nsURLEngine::IUETaskCallback,
  12. public ParamConstructor
  13. {
  14. struct TaskData{
  15. IUETaskPtr spTask;
  16. std::string strFile;
  17. std::vector<unsigned char> vecData;
  18. };
  19. typedef boost::shared_ptr<TaskData> TaskDataPtr;
  20. typedef std::map<TaskID, TaskDataPtr> TaskDataMap;
  21. public:
  22. ~DownloadManagerImpl(void);
  23. static DownloadManagerImpl& getInstance(void)
  24. {
  25. static DownloadManagerImpl s_instance;
  26. return s_instance;
  27. }
  28. virtual TaskID CreateTask(TaskInitData* pInit);
  29. virtual bool StartTask(TaskID taskID);
  30. virtual bool StopTask(TaskID taskID);
  31. void init(HWND hWnd);
  32. void uninit(void);
  33. //任务进度回调
  34. virtual void OnTaskProgress(double fNow,double fTotal,UETaskID taskid);
  35. //任务事件回调
  36. virtual void OnTaskEvent(emTaskEvent event,emEngineErrCode errCode,UETaskID taskid);
  37. //任务数据回调
  38. virtual void OnTaskData(UEVoidPtr ptr,unsigned int nLen,UETaskID taskid);
  39. virtual void ParamAlloc(
  40. unsigned int nEvent,
  41. unsigned int nSubEvent,
  42. void** param1,
  43. void** param2
  44. );
  45. virtual void ParamFree(
  46. unsigned int nEvent,
  47. unsigned int nSubEvent,
  48. void* param1,
  49. void* param2
  50. );
  51. protected:
  52. void* AllocCompleteBuffer(TaskID taskID);
  53. private:
  54. TaskDataMap mmTasks;
  55. IUETaskManagerPtr mspTaskManager;
  56. HWND m_hParent;
  57. DownloadManagerImpl(void);
  58. };
  59. #define GetDownloadManager() DownloadManagerImpl::getInstance()
  60. #endif //COMMON_DOWNLOADMANAGERIMPL_H_