aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/kamon/TraceContext.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/kamon/TraceContext.scala')
-rw-r--r--src/main/scala/kamon/TraceContext.scala34
1 files changed, 34 insertions, 0 deletions
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
+ }
+}
+