diff options
Diffstat (limited to 'src/main/scala/kamon/instrumentation/PromiseInstrumentation.scala')
-rw-r--r-- | src/main/scala/kamon/instrumentation/PromiseInstrumentation.scala | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/src/main/scala/kamon/instrumentation/PromiseInstrumentation.scala b/src/main/scala/kamon/instrumentation/PromiseInstrumentation.scala deleted file mode 100644 index a39bc4ad..00000000 --- a/src/main/scala/kamon/instrumentation/PromiseInstrumentation.scala +++ /dev/null @@ -1,47 +0,0 @@ -package kamon.instrumentation - -import org.aspectj.lang.annotation._ -import kamon.TraceContext -import scala.util.Try -import scala.concurrent.ExecutionContext -import org.aspectj.lang.ProceedingJoinPoint -import scala.Some - -@Aspect("perthis(promiseCreation())") -class PromiseInstrumentation { - - private var traceContext: Option[TraceContext] = None - - @Pointcut("execution(scala.concurrent.impl.Promise.DefaultPromise.new(..))") - def promiseCreation(): Unit = {} - - @Before("promiseCreation()") - def catchTheTraceContext = { - TraceContext.current match { - case Some(ctx) => traceContext = Some(ctx.fork) - case None => traceContext = None - } - } - - @Pointcut("execution(* scala.concurrent.Future.onComplete(..)) && args(func, executor)") - def registeringOnCompleteCallback(func: Try[Any] => Any, executor: ExecutionContext) = {} - - @Around("registeringOnCompleteCallback(func, executor)") - def around(pjp: ProceedingJoinPoint, func: Try[Any] => Any, executor: ExecutionContext) = { - import pjp._ - - val wrappedFunction = traceContext match { - case Some(ctx) => (tryResult: Try[Any]) => { - TraceContext.set(ctx) - val result = func(tryResult) - TraceContext.clear - - result - } - case None => func - } - - proceed(getArgs.updated(0, wrappedFunction)) - } - -} |