Browse Source

feat: 新增根据ID/Group获取请求对象

drake 1 năm trước cách đây
mục cha
commit
f2a6cae80d
1 tập tin đã thay đổi với 58 bổ sung37 xóa
  1. 58 37
      net/src/main/java/com/drake/net/Net.kt

+ 58 - 37
net/src/main/java/com/drake/net/Net.kt

@@ -29,6 +29,7 @@ package com.drake.net
 import android.util.Log
 import com.drake.net.interfaces.ProgressListener
 import com.drake.net.request.*
+import okhttp3.Request
 
 object Net {
 
@@ -211,6 +212,7 @@ object Net {
     /**
      * 取消指定的网络请求, Id理论上是唯一的, 所以该函数一次只能取消一个请求
      * @return 如果成功取消返回true
+     * @see com.drake.net.request.BaseRequest.setId
      */
     @JvmStatic
     fun cancelId(id: Any?): Boolean {
@@ -234,6 +236,7 @@ object Net {
     /**
      * 根据分组取消网络请求
      * @return 如果成功取消返回true, 无论取消个数
+     * @see com.drake.net.request.BaseRequest.setGroup
      */
     @JvmStatic
     fun cancelGroup(group: Any?): Boolean {
@@ -263,19 +266,12 @@ object Net {
      * @see com.drake.net.request.BaseRequest.setId
      */
     @JvmStatic
-    fun addUploadListener(id: Any, progressListener: ProgressListener) {
-        val iterator = NetConfig.runningCalls.iterator()
-        while (iterator.hasNext()) {
-            val call = iterator.next().get()
-            if (call == null) {
-                iterator.remove()
-                continue
-            }
-            if (id == call.request().id) {
-                call.request().uploadListeners().add(progressListener)
-                return
-            }
+    fun addUploadListener(id: Any, progressListener: ProgressListener): Boolean {
+        getRequestById(id)?.let { request ->
+            request.uploadListeners().add(progressListener)
+            return true
         }
+        return false
     }
 
     /**
@@ -284,19 +280,12 @@ object Net {
      * @see com.drake.net.request.BaseRequest.setId
      */
     @JvmStatic
-    fun removeUploadListener(id: Any, progressListener: ProgressListener) {
-        val iterator = NetConfig.runningCalls.iterator()
-        while (iterator.hasNext()) {
-            val call = iterator.next().get()
-            if (call == null) {
-                iterator.remove()
-                continue
-            }
-            if (id == call.request().id) {
-                call.request().uploadListeners().remove(progressListener)
-                return
-            }
+    fun removeUploadListener(id: Any, progressListener: ProgressListener): Boolean {
+        getRequestById(id)?.let { request ->
+            request.uploadListeners().remove(progressListener)
+            return true
         }
+        return false
     }
 
     /**
@@ -305,7 +294,39 @@ object Net {
      * @see com.drake.net.request.BaseRequest.setId
      */
     @JvmStatic
-    fun addDownloadListener(id: Any, progressListener: ProgressListener) {
+    fun addDownloadListener(id: Any, progressListener: ProgressListener): Boolean {
+        getRequestById(id)?.let { request ->
+            request.downloadListeners().add(progressListener)
+            return true
+        }
+        return false
+    }
+
+    /**
+     * 删除正在请求的下载进度监听器
+     *
+     * @param id 请求的Id
+     * @see com.drake.net.request.BaseRequest.setId
+     */
+    @JvmStatic
+    fun removeDownloadListener(id: Any, progressListener: ProgressListener): Boolean {
+        getRequestById(id)?.let { request ->
+            request.downloadListeners().remove(progressListener)
+            return true
+        }
+        return false
+    }
+
+    //</editor-fold>
+
+    //<editor-fold desc="获取请求">
+
+    /**
+     * 根据ID获取请求对象
+     * @see com.drake.net.request.BaseRequest.setId
+     */
+    @JvmStatic
+    fun getRequestById(id: Any): Request? {
         val iterator = NetConfig.runningCalls.iterator()
         while (iterator.hasNext()) {
             val call = iterator.next().get()
@@ -313,21 +334,21 @@ object Net {
                 iterator.remove()
                 continue
             }
-            if (id == call.request().id) {
-                call.request().downloadListeners().add(progressListener)
-                return
+            val request = call.request()
+            if (id == request.id) {
+                return request
             }
         }
+        return null
     }
 
     /**
-     * 删除正在请求的下载进度监听器
-     *
-     * @param id 请求的Id
-     * @see com.drake.net.request.BaseRequest.setId
+     * 根据Group获取请求对象
+     * @see com.drake.net.request.BaseRequest.setGroup
      */
     @JvmStatic
-    fun removeDownloadListener(id: Any, progressListener: ProgressListener) {
+    fun getRequestByGroup(group: Any): MutableList<Request> {
+        val requests = mutableListOf<Request>()
         val iterator = NetConfig.runningCalls.iterator()
         while (iterator.hasNext()) {
             val call = iterator.next().get()
@@ -335,13 +356,13 @@ object Net {
                 iterator.remove()
                 continue
             }
-            if (id == call.request().id) {
-                call.request().downloadListeners().remove(progressListener)
-                return
+            val request = call.request()
+            if (group == request.group) {
+                requests.add(request)
             }
         }
+        return requests
     }
-
     //</editor-fold>
 
     //<editor-fold desc="日志">