diff options
author | Ivan Topolnjak <ivantopo@gmail.com> | 2017-06-14 13:55:57 +0200 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2017-06-14 13:56:26 +0200 |
commit | c5621743ee7502c379367ff4bccf810f9a8a24d4 (patch) | |
tree | b57d532054be094db00d279b9ee8eef86ffc111a | |
parent | ac08f9f5bac96858e0ff552fb8137c7d72904e1c (diff) | |
download | Kamon-c5621743ee7502c379367ff4bccf810f9a8a24d4.tar.gz Kamon-c5621743ee7502c379367ff4bccf810f9a8a24d4.tar.bz2 Kamon-c5621743ee7502c379367ff4bccf810f9a8a24d4.zip |
allow removal of instruments from a metric
-rw-r--r-- | kamon-core/src/main/scala/kamon/metric/Metric.scala | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/kamon-core/src/main/scala/kamon/metric/Metric.scala b/kamon-core/src/main/scala/kamon/metric/Metric.scala index dbac3878..89ebde62 100644 --- a/kamon-core/src/main/scala/kamon/metric/Metric.scala +++ b/kamon-core/src/main/scala/kamon/metric/Metric.scala @@ -34,6 +34,10 @@ trait Metric[T] { def refine(tags: Tags): T def refine(tags: (String, String)*): T def refine(tag: String, value: String): T + + def remove(tags: Tags): Boolean + def remove(tags: (String, String)*): Boolean + def remove(tag: String, value: String): Boolean } trait HistogramMetric extends Metric[Histogram] with Histogram @@ -46,17 +50,26 @@ abstract sealed class BaseMetric[T, S](val instrumentType: InstrumentType) exten private val instruments = TrieMap.empty[Tags, T] protected lazy val baseInstrument: T = instruments.atomicGetOrElseUpdate(Map.empty, createInstrument(Map.empty)) - def refine(tag: String, value: String): T = { + override def refine(tag: String, value: String): T = { val instrumentTags = Map(tag -> value) instruments.atomicGetOrElseUpdate(instrumentTags, createInstrument(instrumentTags)) } - def refine(tags: Map[String, String]): T = + override def refine(tags: Map[String, String]): T = instruments.atomicGetOrElseUpdate(tags, createInstrument(tags)) - def refine(tags: (String, String)*): T = + override def refine(tags: (String, String)*): T = refine(tags.toMap) + override def remove(tags: Tags): Boolean = + if(tags.nonEmpty) instruments.remove(tags).nonEmpty else false + + override def remove(tags: (String, String)*): Boolean = + if(tags.nonEmpty) instruments.remove(tags.toMap).nonEmpty else false + + override def remove(tag: String, value: String): Boolean = + instruments.remove(Map(tag -> value)).nonEmpty + private[kamon] def snapshot(): Seq[S] = instruments.values.map(createSnapshot).toSeq |