All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ru.hnau.jutils.producer.locked_producer.CompletableLockedProducer.kt Maven / Gradle / Ivy

There is a newer version: 2.1.1
Show newest version
package ru.hnau.jutils.producer.locked_producer

import kotlinx.coroutines.Deferred
import kotlinx.coroutines.Job
import ru.hnau.jutils.finisher.Finisher
import ru.hnau.jutils.helpers.Completable
import ru.hnau.jutils.helpers.asCompletable


class CompletableLockedProducer : CalcLockedProducer() {

    fun wait(completable: Completable<*>) {
        incLockedCount()
        completable.executeOnCompleted { decLockedCount() }
    }

}

fun Job.addToLockedProducer(lockedProducer: CompletableLockedProducer?) =
        apply { lockedProducer?.wait(this.asCompletable) }

fun  Deferred.addToLockedProducer(lockedProducer: CompletableLockedProducer?) =
        apply { lockedProducer?.wait(this.asCompletable) }

fun  Finisher.addToLockedProducer(lockedProducer: CompletableLockedProducer?) =
        apply { lockedProducer?.wait(this) }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy