diff options
author | Ivan Topolnak <itopolnak@despegar.com> | 2014-03-07 18:08:01 -0300 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2014-03-11 21:14:53 -0300 |
commit | 54f37293b1faac5355c26a298db6b858114bc659 (patch) | |
tree | 14a4a6e156d163925664753d990f7d5bbe4b4084 /kamon-core/src/main/scala/kamon/metrics/package.scala | |
parent | 60f8dd3be4593cb55e5c4023b7041ad94f6b8c8a (diff) | |
download | Kamon-54f37293b1faac5355c26a298db6b858114bc659.tar.gz Kamon-54f37293b1faac5355c26a298db6b858114bc659.tar.bz2 Kamon-54f37293b1faac5355c26a298db6b858114bc659.zip |
multiple fixes to the custom metrics collection facilities
Diffstat (limited to 'kamon-core/src/main/scala/kamon/metrics/package.scala')
-rw-r--r-- | kamon-core/src/main/scala/kamon/metrics/package.scala | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/kamon-core/src/main/scala/kamon/metrics/package.scala b/kamon-core/src/main/scala/kamon/metrics/package.scala index f89d84a3..640157a9 100644 --- a/kamon-core/src/main/scala/kamon/metrics/package.scala +++ b/kamon-core/src/main/scala/kamon/metrics/package.scala @@ -16,11 +16,24 @@ package kamon +import scala.annotation.tailrec +import com.typesafe.config.Config + package object metrics { - def combineMaps[K, V](left: Map[K, V], right: Map[K, V])(valueMerger: (V, V) ⇒ V): Map[K, V] = { - (left ++ right) map { - case (key, rightValue) ⇒ key -> left.get(key).map(leftValue ⇒ valueMerger(leftValue, rightValue)).getOrElse(rightValue) + case class HdrPrecisionConfig(highestTrackableValue: Long, significantValueDigits: Int) + + def extractPrecisionConfig(config: Config): HdrPrecisionConfig = + HdrPrecisionConfig(config.getLong("highest-trackable-value"), config.getInt("significant-value-digits")) + + @tailrec def combineMaps[K, V](left: Map[K, V], right: Map[K, V])(valueMerger: (V, V) ⇒ V): Map[K, V] = { + if (right.isEmpty) + left + else { + val (key, rightValue) = right.head + val value = left.get(key).map(valueMerger(_, rightValue)).getOrElse(rightValue) + + combineMaps(left.updated(key, value), right.tail)(valueMerger) } } } |