diff options
author | Ivan Topolnak <ivantopo@gmail.com> | 2013-11-05 18:38:39 -0300 |
---|---|---|
committer | Ivan Topolnak <ivantopo@gmail.com> | 2013-11-05 18:38:39 -0300 |
commit | 2b63540e5fffab545d0846cfb3dab5c0e1d0c9e1 (patch) | |
tree | 56c4ad1f025c9144376cd4463ad4d4a23e37b571 /kamon-spray/src/main/scala/kamon/spray/UowDirectives.scala | |
parent | 5127c3bb83cd6fe90e071720d995cfb53d913e6a (diff) | |
download | Kamon-2b63540e5fffab545d0846cfb3dab5c0e1d0c9e1.tar.gz Kamon-2b63540e5fffab545d0846cfb3dab5c0e1d0c9e1.tar.bz2 Kamon-2b63540e5fffab545d0846cfb3dab5c0e1d0c9e1.zip |
basic separation of concerns between sub-projects
Diffstat (limited to 'kamon-spray/src/main/scala/kamon/spray/UowDirectives.scala')
-rw-r--r-- | kamon-spray/src/main/scala/kamon/spray/UowDirectives.scala | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/kamon-spray/src/main/scala/kamon/spray/UowDirectives.scala b/kamon-spray/src/main/scala/kamon/spray/UowDirectives.scala new file mode 100644 index 00000000..6f913a67 --- /dev/null +++ b/kamon-spray/src/main/scala/kamon/spray/UowDirectives.scala @@ -0,0 +1,27 @@ +package kamon.spray + +import spray.routing.directives.BasicDirectives +import spray.routing._ +import java.util.concurrent.atomic.AtomicLong +import scala.util.Try +import java.net.InetAddress +import kamon.trace.Trace + +trait UowDirectives extends BasicDirectives { + def uow: Directive0 = mapRequest { request => + val uowHeader = request.headers.find(_.name == "X-UOW") + + val generatedUow = uowHeader.map(_.value).getOrElse(UowDirectives.newUow) + // TODO: Tracer will always have a context at this point, just rename the uow. + //Tracer.set(Tracer.context().getOrElse(Tracer.newTraceContext()).copy(uow = generatedUow)) + + request + } +} + +object UowDirectives { + val uowCounter = new AtomicLong + val hostnamePrefix = Try(InetAddress.getLocalHost.getHostName).getOrElse("unknown-localhost") + def newUow = "%s-%s".format(hostnamePrefix, uowCounter.incrementAndGet()) + +}
\ No newline at end of file |