diff options
author | Ivan Topolnjak <ivantopo@gmail.com> | 2013-10-30 09:04:25 -0300 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2013-10-30 09:04:25 -0300 |
commit | ca1e93621ddad4b9f2a9028ea183b1c2f4c25a27 (patch) | |
tree | 2f9ce9a7b2f73fd19b5ec2d1af46c4ab43037528 /kamon-core/src/main/scala/kamon/instrumentation/SprayServerInstrumentation.scala | |
parent | ab40e0e7f35f97390d180b49d556ee36aac4af18 (diff) | |
download | Kamon-ca1e93621ddad4b9f2a9028ea183b1c2f4c25a27.tar.gz Kamon-ca1e93621ddad4b9f2a9028ea183b1c2f4c25a27.tar.bz2 Kamon-ca1e93621ddad4b9f2a9028ea183b1c2f4c25a27.zip |
move things all over the place
Diffstat (limited to 'kamon-core/src/main/scala/kamon/instrumentation/SprayServerInstrumentation.scala')
-rw-r--r-- | kamon-core/src/main/scala/kamon/instrumentation/SprayServerInstrumentation.scala | 115 |
1 files changed, 0 insertions, 115 deletions
diff --git a/kamon-core/src/main/scala/kamon/instrumentation/SprayServerInstrumentation.scala b/kamon-core/src/main/scala/kamon/instrumentation/SprayServerInstrumentation.scala deleted file mode 100644 index 2239f382..00000000 --- a/kamon-core/src/main/scala/kamon/instrumentation/SprayServerInstrumentation.scala +++ /dev/null @@ -1,115 +0,0 @@ -package kamon.instrumentation - -import org.aspectj.lang.annotation._ -import kamon.{TraceContext, Tracer} -import kamon.trace.UowTracing._ -import kamon.trace.context.TracingAwareContext -import org.aspectj.lang.ProceedingJoinPoint -import spray.http.HttpRequest -import kamon.trace.UowTracing.Finish -import kamon.trace.UowTracing.Rename -import spray.http.HttpHeaders.Host - -//import spray.can.client.HttpHostConnector.RequestContext - -trait ContextAware { - def traceContext: Option[TraceContext] -} - -trait TimedContextAware { - def timestamp: Long - def traceContext: Option[TraceContext] -} - -@Aspect -class SprayOpenRequestContextTracing { - @DeclareMixin("spray.can.server.OpenRequestComponent.DefaultOpenRequest") - def mixinContextAwareToOpenRequest: ContextAware = new ContextAware { - val traceContext: Option[TraceContext] = Tracer.traceContext.value - } - - @DeclareMixin("spray.can.client.HttpHostConnector.RequestContext") - def mixinContextAwareToRequestContext: TimedContextAware = new TimedContextAware { - val timestamp: Long = System.nanoTime() - val traceContext: Option[TraceContext] = Tracer.traceContext.value - } -} - -@Aspect -class SprayServerInstrumentation { - - @Pointcut("execution(spray.can.server.OpenRequestComponent$DefaultOpenRequest.new(..)) && this(openRequest) && args(*, request, *, *)") - def openRequestInit(openRequest: ContextAware, request: HttpRequest): Unit = {} - - @After("openRequestInit(openRequest, request)") - def afterInit(openRequest: ContextAware, request: HttpRequest): Unit = { - Tracer.start - openRequest.traceContext - - Tracer.context().map(_.tracer ! Rename(request.uri.path.toString())) - } - - @Pointcut("execution(* spray.can.server.OpenRequestComponent$DefaultOpenRequest.handleResponseEndAndReturnNextOpenRequest(..)) && target(openRequest)") - def openRequestCreation(openRequest: ContextAware): Unit = {} - - @After("openRequestCreation(openRequest)") - def afterFinishingRequest(openRequest: ContextAware): Unit = { - val original = openRequest.traceContext - Tracer.context().map(_.tracer ! Finish()) - - if(Tracer.context() != original) { - println(s"OMG DIFFERENT Original: [${original}] - Came in: [${Tracer.context}]") - } - } - - @Pointcut("execution(spray.can.client.HttpHostConnector.RequestContext.new(..)) && this(ctx) && args(request, *, *, *)") - def requestRecordInit(ctx: TimedContextAware, request: HttpRequest): Unit = {} - - @After("requestRecordInit(ctx, request)") - def whenCreatedRequestRecord(ctx: TimedContextAware, request: HttpRequest): Unit = { - // Necessary to force the initialization of TracingAwareRequestContext at the moment of creation. - for{ - tctx <- ctx.traceContext - host <- request.header[Host] - } tctx.tracer ! WebExternalStart(ctx.timestamp, host.host) - } - - - - @Pointcut("execution(* spray.can.client.HttpHostConnectionSlot.dispatchToCommander(..)) && args(requestContext, message)") - def dispatchToCommander(requestContext: TimedContextAware, message: Any): Unit = {} - - @Around("dispatchToCommander(requestContext, message)") - def aroundDispatchToCommander(pjp: ProceedingJoinPoint, requestContext: TimedContextAware, message: Any) = { - println("Completing the request with context: " + requestContext.traceContext) - - Tracer.traceContext.withValue(requestContext.traceContext) { - requestContext.traceContext.map { - tctx => tctx.tracer ! WebExternalFinish(requestContext.timestamp) - } - pjp.proceed() - } - - } - - - @Pointcut("execution(* spray.can.client.HttpHostConnector.RequestContext.copy(..)) && this(old)") - def copyingRequestContext(old: TimedContextAware): Unit = {} - - @Around("copyingRequestContext(old)") - def aroundCopyingRequestContext(pjp: ProceedingJoinPoint, old: TimedContextAware) = { - println("Instrumenting the request context copy.") - Tracer.traceContext.withValue(old.traceContext) { - pjp.proceed() - } - } -} - -case class DefaultTracingAwareRequestContext(traceContext: Option[TraceContext] = Tracer.context(), timestamp: Long = System.nanoTime) extends TracingAwareContext - -@Aspect -class SprayRequestContextTracing { - - @DeclareMixin("spray.can.client.HttpHostConnector.RequestContext") - def mixin: TracingAwareContext = DefaultTracingAwareRequestContext() -}
\ No newline at end of file |