diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-04-01 22:06:55 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-04-27 16:21:51 +0000 |
| commit | 89cd9276e346f893d876a0c57bfd0b022d816e42 (patch) | |
| tree | 8263ec26bfc80a23f7283d5a37e3b57f09c9dfa1 | |
| parent | 05844638f9e61c7db86e3ab6f6eb5ede390b066d (diff) | |
| download | mullvadvpn-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.kt | 21 |
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() |
