diff --git a/fleet/reporting/shared/srcCommonMain/fleet/reporting/shared/tracing/Tracing.kt b/fleet/reporting/shared/srcCommonMain/fleet/reporting/shared/tracing/Tracing.kt index 8e30f02cfff5..2e3511c9c329 100644 --- a/fleet/reporting/shared/srcCommonMain/fleet/reporting/shared/tracing/Tracing.kt +++ b/fleet/reporting/shared/srcCommonMain/fleet/reporting/shared/tracing/Tracing.kt @@ -13,7 +13,8 @@ import kotlinx.coroutines.* import kotlin.coroutines.CoroutineContext import kotlin.coroutines.coroutineContext -private inline fun withSpan(span: CompletableSpan, body: (Span) -> T): T = +@PublishedApi +internal inline fun withSpan(span: CompletableSpan, body: (Span) -> T): T = runCatching { body(span) }.also { span.completeWithResult(it) }.getOrThrow() fun CompletableSpan.completeWithResult(result: Result<*>) { @@ -28,7 +29,7 @@ fun CompletableSpan.completeWithResult(result: Result<*>) { } } -fun withCurrentSpan(span: Span, body: () -> T): T = +inline fun withCurrentSpan(span: Span, body: () -> T): T = currentSpanThreadLocal.get().let { oldSpan -> try { currentSpanThreadLocal.set(span) @@ -39,7 +40,7 @@ fun withCurrentSpan(span: Span, body: () -> T): T = } } -fun span(name: String, info: SpanInfoBuilder.() -> Unit = {}, body: () -> T): T = +inline fun span(name: String, info: SpanInfoBuilder.() -> Unit = {}, body: () -> T): T = currentSpan.let { span -> when (span) { is Span.Noop -> body() @@ -63,6 +64,7 @@ suspend fun spannedScope( withContext(span.asContextElement(), body) } +@PublishedApi internal inline fun spanInfo(name: String, job: Any, isScope: Boolean, builder: SpanInfoBuilder.() -> Unit = {}): SpanInfo { return SpanInfoBuilder(name, job, isScope).apply(builder).build() } \ No newline at end of file