aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/TraceContext.scala
diff options
context:
space:
mode:
authorIvan Topolnak <ivantopo@gmail.com>2013-08-12 19:00:49 -0300
committerIvan Topolnak <ivantopo@gmail.com>2013-08-12 19:00:49 -0300
commit18656c723881ebfd8ade43a990fe73beba5690d0 (patch)
tree34b563bc5f8913f054df15dad47a8d8e4b5b0e36 /kamon-core/src/main/scala/kamon/TraceContext.scala
parent66957f2632eaccae4e3a354b8787fded8c6369d2 (diff)
downloadKamon-18656c723881ebfd8ade43a990fe73beba5690d0.tar.gz
Kamon-18656c723881ebfd8ade43a990fe73beba5690d0.tar.bz2
Kamon-18656c723881ebfd8ade43a990fe73beba5690d0.zip
fixed the instrumentation to work nicely with spray
Diffstat (limited to 'kamon-core/src/main/scala/kamon/TraceContext.scala')
-rw-r--r--kamon-core/src/main/scala/kamon/TraceContext.scala21
1 files changed, 12 insertions, 9 deletions
diff --git a/kamon-core/src/main/scala/kamon/TraceContext.scala b/kamon-core/src/main/scala/kamon/TraceContext.scala
index 6b32550f..62d7f57e 100644
--- a/kamon-core/src/main/scala/kamon/TraceContext.scala
+++ b/kamon-core/src/main/scala/kamon/TraceContext.scala
@@ -1,31 +1,34 @@
package kamon
import java.util.UUID
-import akka.actor.{ActorSystem, ActorPath}
+import akka.actor._
import akka.agent.Agent
import java.util.concurrent.TimeUnit
import scala.util.{Failure, Success}
import akka.util.Timeout
-case class TraceContext(id: UUID, private val entries: Agent[List[TraceEntry]], userContext: Option[Any] = None) {
+case class TraceContext(id: UUID, entries: ActorRef, userContext: Option[Any] = None) {
implicit val timeout = Timeout(30, TimeUnit.SECONDS)
implicit val as = Kamon.actorSystem.dispatcher
- def append(entry: TraceEntry) = entries send (entry :: _)
- def close = entries.future.onComplete({
- case Success(list) => Kamon.publish(FullTransaction(id, list))
- case Failure(t) => println("WTF!")
- })
+ def append(entry: TraceEntry) = entries ! entry
+ def close = entries ! "Close" // TODO type this thing!.
}
object TraceContext {
- implicit val as2 = Kamon.actorSystem.dispatcher
- def apply()(implicit actorSystem: ActorSystem) = new TraceContext(UUID.randomUUID(), Agent[List[TraceEntry]](Nil))
+ def apply()(implicit system: ActorSystem) = new TraceContext(UUID.randomUUID(), system.actorOf(Props[TraceAccumulator])) // TODO: Move to a kamon specific supervisor, like /user/kamon/tracer
}
+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