aboutsummaryrefslogtreecommitdiff
path: root/kamon-spray/src/main/scala/kamon/spray/SprayExtensionSettings.scala
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2015-01-12 01:45:27 +0100
committerIvan Topolnjak <ivantopo@gmail.com>2015-01-24 23:19:01 +0100
commit01a34f67ff75419c440f2e69c0a0db888a670a34 (patch)
tree9c4dee4e9c13c26937356950f9e4927c3f9dfb7d /kamon-spray/src/main/scala/kamon/spray/SprayExtensionSettings.scala
parent4a47e92d23af371f1d50b40af6cbe00a5ffc0105 (diff)
downloadKamon-01a34f67ff75419c440f2e69c0a0db888a670a34.tar.gz
Kamon-01a34f67ff75419c440f2e69c0a0db888a670a34.tar.bz2
Kamon-01a34f67ff75419c440f2e69c0a0db888a670a34.zip
! all: improve the metric recorders infrastructure
Diffstat (limited to 'kamon-spray/src/main/scala/kamon/spray/SprayExtensionSettings.scala')
-rw-r--r--kamon-spray/src/main/scala/kamon/spray/SprayExtensionSettings.scala35
1 files changed, 35 insertions, 0 deletions
diff --git a/kamon-spray/src/main/scala/kamon/spray/SprayExtensionSettings.scala b/kamon-spray/src/main/scala/kamon/spray/SprayExtensionSettings.scala
new file mode 100644
index 00000000..44c71eaf
--- /dev/null
+++ b/kamon-spray/src/main/scala/kamon/spray/SprayExtensionSettings.scala
@@ -0,0 +1,35 @@
+package kamon.spray
+
+import akka.actor.ExtendedActorSystem
+
+case class SprayExtensionSettings(
+ includeTraceTokenHeader: Boolean,
+ traceTokenHeaderName: String,
+ nameGenerator: SprayNameGenerator,
+ clientInstrumentationLevel: ClientInstrumentationLevel.Level)
+
+object SprayExtensionSettings {
+ def apply(system: ExtendedActorSystem): SprayExtensionSettings = {
+ val config = system.settings.config.getConfig("kamon.spray")
+
+ val includeTraceTokenHeader: Boolean = config.getBoolean("automatic-trace-token-propagation")
+ val traceTokenHeaderName: String = config.getString("trace-token-header-name")
+
+ val nameGeneratorFQN = config.getString("name-generator")
+ val nameGenerator: SprayNameGenerator = system.dynamicAccess.createInstanceFor[SprayNameGenerator](nameGeneratorFQN, Nil).get // let's bubble up any problems.
+
+ val clientInstrumentationLevel: ClientInstrumentationLevel.Level = config.getString("client.instrumentation-level") match {
+ case "request-level" ⇒ ClientInstrumentationLevel.RequestLevelAPI
+ case "host-level" ⇒ ClientInstrumentationLevel.HostLevelAPI
+ case other ⇒ sys.error(s"Invalid client instrumentation level [$other] found in configuration.")
+ }
+
+ SprayExtensionSettings(includeTraceTokenHeader, traceTokenHeaderName, nameGenerator, clientInstrumentationLevel)
+ }
+}
+
+object ClientInstrumentationLevel {
+ sealed trait Level
+ case object RequestLevelAPI extends Level
+ case object HostLevelAPI extends Level
+}