summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-04-01 22:06:55 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-04-27 16:21:51 +0000
commit89cd9276e346f893d876a0c57bfd0b022d816e42 (patch)
tree8263ec26bfc80a23f7283d5a37e3b57f09c9dfa1
parent05844638f9e61c7db86e3ab6f6eb5ede390b066d (diff)
downloadmullvadvpn-89cd9276e346f893d876a0c57bfd0b022d816e42.tar.xz
mullvadvpn-89cd9276e346f893d876a0c57bfd0b022d816e42.zip
Implement support for named jobs in `JobTracker`
-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()