diff options
author | Ivan Topolnjak <ivantopo@gmail.com> | 2014-08-31 21:52:06 -0300 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2014-08-31 21:52:06 -0300 |
commit | 0d7fa6333c7d6e865575522a0015c93ff3fbbe1b (patch) | |
tree | 2bf4c6b31305f516f2576b2e82f2496bb73e5eac /kamon-core/src/main/scala/kamon/trace/TraceRecorder.scala | |
parent | c058e1b8f459f134f2409c06a57d01febfa0dc84 (diff) | |
download | Kamon-0d7fa6333c7d6e865575522a0015c93ff3fbbe1b.tar.gz Kamon-0d7fa6333c7d6e865575522a0015c93ff3fbbe1b.tar.bz2 Kamon-0d7fa6333c7d6e865575522a0015c93ff3fbbe1b.zip |
+ core: initial support for akka remoting/cluster, related to #61
Diffstat (limited to 'kamon-core/src/main/scala/kamon/trace/TraceRecorder.scala')
-rw-r--r-- | kamon-core/src/main/scala/kamon/trace/TraceRecorder.scala | 24 |
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) |