From 114918ea3932e5d45416e894838097208cce7c2c Mon Sep 17 00:00:00 2001 From: Ivan Topolnjak Date: Thu, 23 Nov 2017 01:43:34 +0100 Subject: add utility apis for easier usage of Spans in the current context --- kamon-core/src/main/scala/kamon/Kamon.scala | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'kamon-core/src/main/scala') diff --git a/kamon-core/src/main/scala/kamon/Kamon.scala b/kamon-core/src/main/scala/kamon/Kamon.scala index 6e0a260d..1a9dbe95 100644 --- a/kamon-core/src/main/scala/kamon/Kamon.scala +++ b/kamon-core/src/main/scala/kamon/Kamon.scala @@ -122,6 +122,22 @@ object Kamon extends MetricLookup with ReporterRegistry with Tracer { def withContextKey[T, K](key: Key[K], value: K)(f: => T): T = withContext(currentContext().withKey(key, value))(f) + def withSpan[T](span: Span)(f: => T): T = + withSpan(span, true)(f) + + def withSpan[T](span: Span, finishSpan: Boolean)(f: => T): T = { + try { + withContextKey(Span.ContextKey, span)(f) + } catch { + case t: Throwable => + span.addError(t.getMessage, t) + throw t + + } finally { + if(finishSpan) + span.finish() + } + } override def loadReportersFromConfig(): Unit = _reporterRegistry.loadReportersFromConfig() -- cgit v1.2.3