aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Topolnak <ivantopo@gmail.com>2013-06-06 18:03:20 -0300
committerIvan Topolnak <ivantopo@gmail.com>2013-06-06 18:03:20 -0300
commit197746563e47783ed4b5f43e94c9aa63734081f6 (patch)
treec233afe3560a1f3cdaf33f6edcbd23b3a196b5f1
parent695b9b6d2bdf55afd7fe420d9a6fc36d3d45ed31 (diff)
downloadKamon-197746563e47783ed4b5f43e94c9aa63734081f6.tar.gz
Kamon-197746563e47783ed4b5f43e94c9aa63734081f6.tar.bz2
Kamon-197746563e47783ed4b5f43e94c9aa63734081f6.zip
wip
-rw-r--r--.gitignore1
-rw-r--r--project/Dependencies.scala2
-rw-r--r--src/main/scala/kamon/Kamon.scala21
-rw-r--r--src/main/scala/kamon/TraceContext.scala34
4 files changed, 57 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
index ffb18ce4..c185efd9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
*.class
*.log
.history
+*.sc
# sbt specific
dist/*
diff --git a/project/Dependencies.scala b/project/Dependencies.scala
index a0d51a39..62c86c84 100644
--- a/project/Dependencies.scala
+++ b/project/Dependencies.scala
@@ -22,7 +22,7 @@ object Dependencies {
val logback = "ch.qos.logback" % "logback-classic" % "1.0.10"
val aspectJ = "org.aspectj" % "aspectjrt" % "1.7.2"
val metrics = "com.codahale.metrics" % "metrics-core" % "3.0.0-BETA2"
- val newrelic = "com.newrelic.agent.java" % "newrelic-api" % "2.17.2"
+ val newrelic = "com.newrelic.agent.java" % "newrelic-api" % "2.19.0"
def compile (deps: ModuleID*): Seq[ModuleID] = deps map (_ % "compile")
def provided (deps: ModuleID*): Seq[ModuleID] = deps map (_ % "provided")
diff --git a/src/main/scala/kamon/Kamon.scala b/src/main/scala/kamon/Kamon.scala
index ef5f8044..c1b97722 100644
--- a/src/main/scala/kamon/Kamon.scala
+++ b/src/main/scala/kamon/Kamon.scala
@@ -29,3 +29,24 @@ object Kamon {
def publish(tx: FullTransaction) = publisher ! tx
}
+
+
+
+object Tracer {
+ val ctx = new ThreadLocal[Option[TraceContext]] {
+ override def initialValue() = None
+ }
+
+ def context() = ctx.get()
+ def clear = ctx.remove()
+ def set(traceContext: TraceContext) = ctx.set(Some(traceContext))
+
+ def start = ??? //set(newTraceContext)
+ def stop = ctx.get match {
+ case Some(context) => context.close
+ case None =>
+ }
+
+ //def newTraceContext(): TraceContext = TraceContext()
+
+}
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
+ }
+}
+