From 197746563e47783ed4b5f43e94c9aa63734081f6 Mon Sep 17 00:00:00 2001 From: Ivan Topolnak Date: Thu, 6 Jun 2013 18:03:20 -0300 Subject: wip --- src/main/scala/kamon/TraceContext.scala | 34 +++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'src/main/scala/kamon/TraceContext.scala') diff --git a/src/main/scala/kamon/TraceContext.scala b/src/main/scala/kamon/TraceContext.scala index 19ebc578..351446f3 100644 --- a/src/main/scala/kamon/TraceContext.scala +++ b/src/main/scala/kamon/TraceContext.scala @@ -28,3 +28,37 @@ object TraceContext { 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 +} + +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]) = set(f(get())) + } + + def store(entry: TraceEntry): Boolean = { + storage.update(entry :: _) + true + } +} + -- cgit v1.2.3