diff options
author | Ivan Topolnak <ivantopo@gmail.com> | 2013-11-04 18:11:16 -0300 |
---|---|---|
committer | Ivan Topolnak <ivantopo@gmail.com> | 2013-11-04 18:11:16 -0300 |
commit | 5127c3bb83cd6fe90e071720d995cfb53d913e6a (patch) | |
tree | a29cc7be7f729566f3a5a2fc3bc8044c7f47f3cc /kamon-core/src/main/scala/kamon/instrumentation/RunnableInstrumentation.scala | |
parent | ca1e93621ddad4b9f2a9028ea183b1c2f4c25a27 (diff) | |
download | Kamon-5127c3bb83cd6fe90e071720d995cfb53d913e6a.tar.gz Kamon-5127c3bb83cd6fe90e071720d995cfb53d913e6a.tar.bz2 Kamon-5127c3bb83cd6fe90e071720d995cfb53d913e6a.zip |
wip
Diffstat (limited to 'kamon-core/src/main/scala/kamon/instrumentation/RunnableInstrumentation.scala')
-rw-r--r-- | kamon-core/src/main/scala/kamon/instrumentation/RunnableInstrumentation.scala | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/kamon-core/src/main/scala/kamon/instrumentation/RunnableInstrumentation.scala b/kamon-core/src/main/scala/kamon/instrumentation/RunnableInstrumentation.scala deleted file mode 100644 index 2be6e5d1..00000000 --- a/kamon-core/src/main/scala/kamon/instrumentation/RunnableInstrumentation.scala +++ /dev/null @@ -1,59 +0,0 @@ -package kamon.instrumentation - -import org.aspectj.lang.annotation._ -import kamon.{Tracer} -import org.aspectj.lang.ProceedingJoinPoint -import scala.Some -import kamon.trace.TraceContext - -/** - * Marker interface, just to make sure we don't instrument all the Runnables in the classpath. - */ -trait TraceContextAwareRunnable { - def traceContext: Option[TraceContext] -} - - -@Aspect -class RunnableInstrumentation { - - /** - * These are the Runnables that need to be instrumented and make the TraceContext available - * while their run method is executed. - */ - @DeclareMixin("scala.concurrent.impl.CallbackRunnable || scala.concurrent.impl.Future.PromiseCompletingRunnable") - def onCompleteCallbacksRunnable: TraceContextAwareRunnable = new TraceContextAwareRunnable { - val traceContext: Option[TraceContext] = Tracer.traceContext.value - } - - - /** - * Pointcuts - */ - - @Pointcut("execution(kamon.instrumentation.TraceContextAwareRunnable+.new(..)) && this(runnable)") - def instrumentedRunnableCreation(runnable: TraceContextAwareRunnable): Unit = {} - - @Pointcut("execution(* kamon.instrumentation.TraceContextAwareRunnable+.run()) && this(runnable)") - def runnableExecution(runnable: TraceContextAwareRunnable) = {} - - - - @After("instrumentedRunnableCreation(runnable)") - def beforeCreation(runnable: TraceContextAwareRunnable): Unit = { - // Force traceContext initialization. - runnable.traceContext - } - - - @Around("runnableExecution(runnable)") - def around(pjp: ProceedingJoinPoint, runnable: TraceContextAwareRunnable): Any = { - import pjp._ - - Tracer.traceContext.withValue(runnable.traceContext) { - proceed() - } - } - -} - |