summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
Diffstat (limited to 'android')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/util/JobTracker.kt21
1 files changed, 21 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/util/JobTracker.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/util/JobTracker.kt
index 9bbe21fa8b..c827f4b196 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/util/JobTracker.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/util/JobTracker.kt
@@ -7,6 +7,7 @@ import kotlinx.coroutines.launch
class JobTracker {
private val jobs = HashMap<Long, Job>()
+ private val namedJobs = HashMap<String, Long>()
private var jobIdCounter = 0L
@@ -28,6 +29,26 @@ class JobTracker {
}
}
+ fun newJob(name: String, job: Job): Long {
+ synchronized(namedJobs) {
+ cancelJob(name)
+
+ val newJobId = newJob(job)
+
+ namedJobs.put(name, newJobId)
+
+ return newJobId
+ }
+ }
+
+ fun cancelJob(name: String) {
+ synchronized(namedJobs) {
+ namedJobs.remove(name)?.let { oldJobId ->
+ cancelJob(oldJobId)
+ }
+ }
+ }
+
fun cancelJob(jobId: Long) {
synchronized(jobs) {
jobs.remove(jobId)?.cancel()