All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jp.co.bizreach.trace.play.implicits.ZipkinTraceImplicits.scala Maven / Gradle / Ivy

The newest version!
package jp.co.bizreach.trace.play.implicits

import brave.Span
import jp.co.bizreach.trace.akka.actor.ActorTraceSupport.ActorTraceData
import jp.co.bizreach.trace.{TraceData, ZipkinTraceServiceLike}
import play.api.mvc.RequestHeader

trait ZipkinTraceImplicits {

  // for injection
  val tracer: ZipkinTraceServiceLike

  /**
   * Creates a trace data including a span from request headers.
   *
   * @param req the HTTP request header
   * @return the trace data
   */
  implicit def request2trace(implicit req: RequestHeader): TraceData = {
    TraceData(
      span = tracer.toSpan(req.headers)((headers, key) => headers.get(key))
    )
  }

  /**
   * Creates a trace data including a span from request headers for Akka actor.
   *
   * @param req the HTTP request header
   * @return the trace data
   */
  implicit def request2actorTrace(implicit req: RequestHeader): ActorTraceData = {
    val span = tracer.toSpan(req.headers)((headers, key) => headers.get(key))
    val oneWaySpan = tracer.newSpan(Some(span.context())).kind(Span.Kind.CLIENT)
    ActorTraceData(span = oneWaySpan)
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy