aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/trace/TraceRecorder.scala
diff options
context:
space:
mode:
Diffstat (limited to 'kamon-core/src/main/scala/kamon/trace/TraceRecorder.scala')
-rw-r--r--kamon-core/src/main/scala/kamon/trace/TraceRecorder.scala24
1 files changed, 23 insertions, 1 deletions
diff --git a/kamon-core/src/main/scala/kamon/trace/TraceRecorder.scala b/kamon-core/src/main/scala/kamon/trace/TraceRecorder.scala
index 0b3118ed..bc7a0db2 100644
--- a/kamon-core/src/main/scala/kamon/trace/TraceRecorder.scala
+++ b/kamon-core/src/main/scala/kamon/trace/TraceRecorder.scala
@@ -16,6 +16,8 @@
package kamon.trace
+import akka.remote.instrumentation.TraceContextAwareWireFormats.RemoteTraceContext
+
import scala.language.experimental.macros
import java.util.concurrent.atomic.AtomicLong
import kamon.macros.InlineTraceContextMacro
@@ -40,7 +42,27 @@ object TraceRecorder {
// In the future this should select between implementations.
val finalToken = token.getOrElse(newToken)
- new SimpleMetricCollectionContext(name, finalToken, metadata, system)
+ new SimpleMetricCollectionContext(name, finalToken, metadata, TraceContextOrigin.Local, system)
+ }
+
+ def joinRemoteTraceContext(remoteTraceContext: RemoteTraceContext, system: ActorSystem): TraceContext = {
+ new SimpleMetricCollectionContext(
+ remoteTraceContext.getTraceName(),
+ remoteTraceContext.getTraceToken(),
+ Map.empty,
+ TraceContextOrigin.Remote,
+ system,
+ remoteTraceContext.getStartMilliTime(),
+ remoteTraceContext.getIsOpen())
+ }
+
+ def forkTraceContext(context: TraceContext, newName: String): TraceContext = {
+ new SimpleMetricCollectionContext(
+ newName,
+ context.token,
+ Map.empty,
+ TraceContextOrigin.Local,
+ context.system)
}
def setContext(context: Option[TraceContext]): Unit = traceContextStorage.set(context)