diff options
author | Ivan Topolnak <ivantopo@gmail.com> | 2013-11-05 18:38:39 -0300 |
---|---|---|
committer | Ivan Topolnak <ivantopo@gmail.com> | 2013-11-05 18:38:39 -0300 |
commit | 2b63540e5fffab545d0846cfb3dab5c0e1d0c9e1 (patch) | |
tree | 56c4ad1f025c9144376cd4463ad4d4a23e37b571 /kamon-trace/src/main/scala/kamon/trace/TraceContext.scala | |
parent | 5127c3bb83cd6fe90e071720d995cfb53d913e6a (diff) | |
download | Kamon-2b63540e5fffab545d0846cfb3dab5c0e1d0c9e1.tar.gz Kamon-2b63540e5fffab545d0846cfb3dab5c0e1d0c9e1.tar.bz2 Kamon-2b63540e5fffab545d0846cfb3dab5c0e1d0c9e1.zip |
basic separation of concerns between sub-projects
Diffstat (limited to 'kamon-trace/src/main/scala/kamon/trace/TraceContext.scala')
-rw-r--r-- | kamon-trace/src/main/scala/kamon/trace/TraceContext.scala | 54 |
1 files changed, 15 insertions, 39 deletions
diff --git a/kamon-trace/src/main/scala/kamon/trace/TraceContext.scala b/kamon-trace/src/main/scala/kamon/trace/TraceContext.scala index c3f1f2c2..f8491c12 100644 --- a/kamon-trace/src/main/scala/kamon/trace/TraceContext.scala +++ b/kamon-trace/src/main/scala/kamon/trace/TraceContext.scala @@ -4,56 +4,32 @@ import java.util.UUID import akka.actor._ import java.util.concurrent.atomic.AtomicLong import scala.concurrent.duration._ +import kamon.Kamon +import kamon.trace.UowTracing.{Finish, Start} // TODO: Decide if we need or not an ID, generating it takes time and it doesn't seem necessary. -case class TraceContext(id: Long, tracer: ActorRef, uow: String = "", userContext: Option[Any] = None) +protected[kamon] case class TraceContext(private val collector: ActorRef, id: Long, uow: String = "", userContext: Option[Any] = None) { + collector ! Start(id) -object TraceContext { - - def apply()(implicit system: ActorSystem) = { - val n = traceIdCounter.incrementAndGet() - val actor = system.actorOf(UowTraceAggregator.props(reporter, 30 seconds), s"tracer-${n}") - actor ! Start() - - new TraceContext(n, actor) // TODO: Move to a kamon specific supervisor, like /user/kamon/tracer + def finish: Unit = { + collector ! Finish(id) } -} - -class TraceAccumulator extends Actor { - def receive = { - case a => println("Trace Accumulated: "+a) - } } -trait TraceEntry -case class CodeBlockExecutionTime(name: String, begin: Long, end: Long) extends TraceEntry -case class TransactionTrace(id: UUID, start: Long, end: Long, entries: Seq[TraceEntry]) - -object Collector - -trait TraceEntryStorage { - def store(entry: TraceEntry): Boolean +trait ContextAware { + def traceContext: Option[TraceContext] } -class TransactionContext(val id: UUID, private val storage: TraceEntryStorage) { - def store(entry: TraceEntry) = storage.store(entry) -} - -object ThreadLocalTraceEntryStorage extends TraceEntryStorage { - - private val storage = new ThreadLocal[List[TraceEntry]] { - override def initialValue(): List[TraceEntry] = Nil - } - - def update(f: List[TraceEntry] => List[TraceEntry]) = storage set f(storage.get) - - def store(entry: TraceEntry): Boolean = { - update(entry :: _) - true +object ContextAware { + def default: ContextAware = new ContextAware { + val traceContext: Option[TraceContext] = Trace.context() } } - +trait TimedContextAware { + def timestamp: Long + def traceContext: Option[TraceContext] +} |