diff options
Diffstat (limited to 'android/src')
| -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() |
