mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-13 15:52:01 +07:00
[fleet] Resource<*>.span
GitOrigin-RevId: 6860bb799d48da528d511fdbb7f96b619d946346
This commit is contained in:
committed by
intellij-monorepo-bot
parent
137ee8f6af
commit
7968a25171
@@ -3,6 +3,7 @@
|
||||
|
||||
package fleet.util.async
|
||||
|
||||
import fleet.tracing.SpanInfoBuilder
|
||||
import fleet.tracing.spannedScope
|
||||
import kotlinx.coroutines.*
|
||||
import java.lang.RuntimeException
|
||||
@@ -123,6 +124,17 @@ fun <T> Resource<Deferred<T>>.track(displayName: String): Resource<Deferred<T>>
|
||||
}
|
||||
}
|
||||
|
||||
fun <T> Resource<T>.span(name: String, info: SpanInfoBuilder.() -> Unit = {}): Resource<T> =
|
||||
let { source ->
|
||||
resource { cc ->
|
||||
spannedScope(name, info) {
|
||||
source.use { t ->
|
||||
cc(t)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun <T> Resource<T>.catch(): Resource<Result<T>> =
|
||||
let { source ->
|
||||
object : Resource<Result<T>> {
|
||||
@@ -184,7 +196,7 @@ fun <T> Deferred<T>.track(displayName: String): Deferred<T> =
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalCoroutinesApi::class)
|
||||
fun<T> Resource<T>.useOn(coroutineScope: CoroutineScope): Deferred<T> {
|
||||
fun <T> Resource<T>.useOn(coroutineScope: CoroutineScope): Deferred<T> {
|
||||
val deferred = CompletableDeferred<T>()
|
||||
coroutineScope.launch(start = CoroutineStart.ATOMIC) {
|
||||
use { t ->
|
||||
|
||||
Reference in New Issue
Block a user