IDownloadManager.cs 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. //------------------------------------------------------------
  2. // Game Framework
  3. // Copyright © 2013-2021 loyalsoft. All rights reserved.
  4. // Homepage: http://www.game7000.com/
  5. // Feedback: http://www.game7000.com/
  6. //------------------------------------------------------------
  7. using System;
  8. using System.Collections.Generic;
  9. namespace GameFramework.Download
  10. {
  11. /// <summary>
  12. /// 下载管理器接口。
  13. /// </summary>
  14. public interface IDownloadManager
  15. {
  16. /// <summary>
  17. /// 获取或设置下载是否被暂停。
  18. /// </summary>
  19. bool Paused
  20. {
  21. get;
  22. set;
  23. }
  24. /// <summary>
  25. /// 获取下载代理总数量。
  26. /// </summary>
  27. int TotalAgentCount
  28. {
  29. get;
  30. }
  31. /// <summary>
  32. /// 获取可用下载代理数量。
  33. /// </summary>
  34. int FreeAgentCount
  35. {
  36. get;
  37. }
  38. /// <summary>
  39. /// 获取工作中下载代理数量。
  40. /// </summary>
  41. int WorkingAgentCount
  42. {
  43. get;
  44. }
  45. /// <summary>
  46. /// 获取等待下载任务数量。
  47. /// </summary>
  48. int WaitingTaskCount
  49. {
  50. get;
  51. }
  52. /// <summary>
  53. /// 获取或设置将缓冲区写入磁盘的临界大小。
  54. /// </summary>
  55. int FlushSize
  56. {
  57. get;
  58. set;
  59. }
  60. /// <summary>
  61. /// 获取或设置下载超时时长,以秒为单位。
  62. /// </summary>
  63. float Timeout
  64. {
  65. get;
  66. set;
  67. }
  68. /// <summary>
  69. /// 获取当前下载速度。
  70. /// </summary>
  71. float CurrentSpeed
  72. {
  73. get;
  74. }
  75. /// <summary>
  76. /// 下载开始事件。
  77. /// </summary>
  78. event EventHandler<DownloadStartEventArgs> DownloadStart;
  79. /// <summary>
  80. /// 下载更新事件。
  81. /// </summary>
  82. event EventHandler<DownloadUpdateEventArgs> DownloadUpdate;
  83. /// <summary>
  84. /// 下载成功事件。
  85. /// </summary>
  86. event EventHandler<DownloadSuccessEventArgs> DownloadSuccess;
  87. /// <summary>
  88. /// 下载失败事件。
  89. /// </summary>
  90. event EventHandler<DownloadFailureEventArgs> DownloadFailure;
  91. /// <summary>
  92. /// 增加下载代理辅助器。
  93. /// </summary>
  94. /// <param name="downloadAgentHelper">要增加的下载代理辅助器。</param>
  95. void AddDownloadAgentHelper(IDownloadAgentHelper downloadAgentHelper);
  96. /// <summary>
  97. /// 根据下载任务的序列编号获取下载任务的信息。
  98. /// </summary>
  99. /// <param name="serialId">要获取信息的下载任务的序列编号。</param>
  100. /// <returns>下载任务的信息。</returns>
  101. TaskInfo GetDownloadInfo(int serialId);
  102. /// <summary>
  103. /// 根据下载任务的标签获取下载任务的信息。
  104. /// </summary>
  105. /// <param name="tag">要获取信息的下载任务的标签。</param>
  106. /// <returns>下载任务的信息。</returns>
  107. TaskInfo[] GetDownloadInfos(string tag);
  108. /// <summary>
  109. /// 根据下载任务的标签获取下载任务的信息。
  110. /// </summary>
  111. /// <param name="tag">要获取信息的下载任务的标签。</param>
  112. /// <param name="results">下载任务的信息。</param>
  113. void GetDownloadInfos(string tag, List<TaskInfo> results);
  114. /// <summary>
  115. /// 获取所有下载任务的信息。
  116. /// </summary>
  117. /// <returns>所有下载任务的信息。</returns>
  118. TaskInfo[] GetAllDownloadInfos();
  119. /// <summary>
  120. /// 获取所有下载任务的信息。
  121. /// </summary>
  122. /// <param name="results">所有下载任务的信息。</param>
  123. void GetAllDownloadInfos(List<TaskInfo> results);
  124. /// <summary>
  125. /// 增加下载任务。
  126. /// </summary>
  127. /// <param name="downloadPath">下载后存放路径。</param>
  128. /// <param name="downloadUri">原始下载地址。</param>
  129. /// <returns>新增下载任务的序列编号。</returns>
  130. int AddDownload(string downloadPath, string downloadUri);
  131. /// <summary>
  132. /// 增加下载任务。
  133. /// </summary>
  134. /// <param name="downloadPath">下载后存放路径。</param>
  135. /// <param name="downloadUri">原始下载地址。</param>
  136. /// <param name="tag">下载任务的标签。</param>
  137. /// <returns>新增下载任务的序列编号。</returns>
  138. int AddDownload(string downloadPath, string downloadUri, string tag);
  139. /// <summary>
  140. /// 增加下载任务。
  141. /// </summary>
  142. /// <param name="downloadPath">下载后存放路径。</param>
  143. /// <param name="downloadUri">原始下载地址。</param>
  144. /// <param name="priority">下载任务的优先级。</param>
  145. /// <returns>新增下载任务的序列编号。</returns>
  146. int AddDownload(string downloadPath, string downloadUri, int priority);
  147. /// <summary>
  148. /// 增加下载任务。
  149. /// </summary>
  150. /// <param name="downloadPath">下载后存放路径。</param>
  151. /// <param name="downloadUri">原始下载地址。</param>
  152. /// <param name="userData">用户自定义数据。</param>
  153. /// <returns>新增下载任务的序列编号。</returns>
  154. int AddDownload(string downloadPath, string downloadUri, object userData);
  155. /// <summary>
  156. /// 增加下载任务。
  157. /// </summary>
  158. /// <param name="downloadPath">下载后存放路径。</param>
  159. /// <param name="downloadUri">原始下载地址。</param>
  160. /// <param name="tag">下载任务的标签。</param>
  161. /// <param name="priority">下载任务的优先级。</param>
  162. /// <returns>新增下载任务的序列编号。</returns>
  163. int AddDownload(string downloadPath, string downloadUri, string tag, int priority);
  164. /// <summary>
  165. /// 增加下载任务。
  166. /// </summary>
  167. /// <param name="downloadPath">下载后存放路径。</param>
  168. /// <param name="downloadUri">原始下载地址。</param>
  169. /// <param name="tag">下载任务的标签。</param>
  170. /// <param name="userData">用户自定义数据。</param>
  171. /// <returns>新增下载任务的序列编号。</returns>
  172. int AddDownload(string downloadPath, string downloadUri, string tag, object userData);
  173. /// <summary>
  174. /// 增加下载任务。
  175. /// </summary>
  176. /// <param name="downloadPath">下载后存放路径。</param>
  177. /// <param name="downloadUri">原始下载地址。</param>
  178. /// <param name="priority">下载任务的优先级。</param>
  179. /// <param name="userData">用户自定义数据。</param>
  180. /// <returns>新增下载任务的序列编号。</returns>
  181. int AddDownload(string downloadPath, string downloadUri, int priority, object userData);
  182. /// <summary>
  183. /// 增加下载任务。
  184. /// </summary>
  185. /// <param name="downloadPath">下载后存放路径。</param>
  186. /// <param name="downloadUri">原始下载地址。</param>
  187. /// <param name="tag">下载任务的标签。</param>
  188. /// <param name="priority">下载任务的优先级。</param>
  189. /// <param name="userData">用户自定义数据。</param>
  190. /// <returns>新增下载任务的序列编号。</returns>
  191. int AddDownload(string downloadPath, string downloadUri, string tag, int priority, object userData);
  192. /// <summary>
  193. /// 根据下载任务的序列编号移除下载任务。
  194. /// </summary>
  195. /// <param name="serialId">要移除下载任务的序列编号。</param>
  196. /// <returns>是否移除下载任务成功。</returns>
  197. bool RemoveDownload(int serialId);
  198. /// <summary>
  199. /// 根据下载任务的标签移除下载任务。
  200. /// </summary>
  201. /// <param name="tag">要移除下载任务的标签。</param>
  202. /// <returns>移除下载任务的数量。</returns>
  203. int RemoveDownloads(string tag);
  204. /// <summary>
  205. /// 移除所有下载任务。
  206. /// </summary>
  207. /// <returns>移除下载任务的数量。</returns>
  208. int RemoveAllDownloads();
  209. }
  210. }