WebRequestManager.WebRequestTask.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  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. namespace GameFramework.WebRequest
  8. {
  9. internal sealed partial class WebRequestManager : GameFrameworkModule, IWebRequestManager
  10. {
  11. /// <summary>
  12. /// Web 请求任务。
  13. /// </summary>
  14. private sealed class WebRequestTask : TaskBase
  15. {
  16. private static int s_Serial = 0;
  17. private WebRequestTaskStatus m_Status;
  18. private string m_WebRequestUri;
  19. private byte[] m_PostData;
  20. private float m_Timeout;
  21. public WebRequestTask()
  22. {
  23. m_Status = WebRequestTaskStatus.Todo;
  24. m_WebRequestUri = null;
  25. m_PostData = null;
  26. m_Timeout = 0f;
  27. }
  28. /// <summary>
  29. /// 获取或设置 Web 请求任务的状态。
  30. /// </summary>
  31. public WebRequestTaskStatus Status
  32. {
  33. get
  34. {
  35. return m_Status;
  36. }
  37. set
  38. {
  39. m_Status = value;
  40. }
  41. }
  42. /// <summary>
  43. /// 获取要发送的远程地址。
  44. /// </summary>
  45. public string WebRequestUri
  46. {
  47. get
  48. {
  49. return m_WebRequestUri;
  50. }
  51. }
  52. /// <summary>
  53. /// 获取 Web 请求超时时长,以秒为单位。
  54. /// </summary>
  55. public float Timeout
  56. {
  57. get
  58. {
  59. return m_Timeout;
  60. }
  61. }
  62. /// <summary>
  63. /// 获取 Web 请求任务的描述。
  64. /// </summary>
  65. public override string Description
  66. {
  67. get
  68. {
  69. return m_WebRequestUri;
  70. }
  71. }
  72. /// <summary>
  73. /// 创建 Web 请求任务。
  74. /// </summary>
  75. /// <param name="webRequestUri">要发送的远程地址。</param>
  76. /// <param name="postData">要发送的数据流。</param>
  77. /// <param name="tag">Web 请求任务的标签。</param>
  78. /// <param name="priority">Web 请求任务的优先级。</param>
  79. /// <param name="timeout">下载超时时长,以秒为单位。</param>
  80. /// <param name="userData">用户自定义数据。</param>
  81. /// <returns>创建的 Web 请求任务。</returns>
  82. public static WebRequestTask Create(string webRequestUri, byte[] postData, string tag, int priority, float timeout, object userData)
  83. {
  84. WebRequestTask webRequestTask = ReferencePool.Acquire<WebRequestTask>();
  85. webRequestTask.Initialize(++s_Serial, tag, priority, userData);
  86. webRequestTask.m_WebRequestUri = webRequestUri;
  87. webRequestTask.m_PostData = postData;
  88. webRequestTask.m_Timeout = timeout;
  89. return webRequestTask;
  90. }
  91. /// <summary>
  92. /// 清理 Web 请求任务。
  93. /// </summary>
  94. public override void Clear()
  95. {
  96. base.Clear();
  97. m_Status = WebRequestTaskStatus.Todo;
  98. m_WebRequestUri = null;
  99. m_PostData = null;
  100. m_Timeout = 0f;
  101. }
  102. /// <summary>
  103. /// 获取要发送的数据流。
  104. /// </summary>
  105. public byte[] GetPostData()
  106. {
  107. return m_PostData;
  108. }
  109. }
  110. }
  111. }