aboutsummaryrefslogblamecommitdiff
path: root/src/main/scala/kamon/TraceContext.scala
blob: e3582c609e29991fcb64ca7a05a7b1bef71b6ef0 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12











                                                                          

                                                               

   
                             
 
                              

                                                     

                                                       





                                                                                               
package kamon

import java.util.UUID
import akka.actor.ActorPath


case class TraceContext(id: UUID, entries: List[TraceEntry]) {
  def fork = this.copy(entries = Nil)
  def withEntry(entry: TraceEntry) = this.copy(entries = entry :: entries)
}

object TraceContext {
  private val context = new ThreadLocal[Option[TraceContext]] {
    override def initialValue(): Option[TraceContext] = None
  }

  def current = context.get()

  def clear = context.remove()

  def set(ctx: TraceContext) = context.set(Some(ctx))

  def start = set(TraceContext(UUID.randomUUID(), Nil))
}

trait TraceEntry
case class MessageExecutionTime(actorPath: ActorPath, initiated: Long, ended: Long)

case class CodeBlockExecutionTime(blockName: String, begin: Long, end: Long) extends TraceEntry