aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/trace/TraceRecorder.scala
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2014-08-31 21:52:06 -0300
committerIvan Topolnjak <ivantopo@gmail.com>2014-08-31 21:52:06 -0300
commit0d7fa6333c7d6e865575522a0015c93ff3fbbe1b (patch)
tree2bf4c6b31305f516f2576b2e82f2496bb73e5eac /kamon-core/src/main/scala/kamon/trace/TraceRecorder.scala
parentc058e1b8f459f134f2409c06a57d01febfa0dc84 (diff)
downloadKamon-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.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)