aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/metric/Metric.scala
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2017-06-14 13:55:57 +0200
committerIvan Topolnjak <ivantopo@gmail.com>2017-06-14 13:56:26 +0200
commitc5621743ee7502c379367ff4bccf810f9a8a24d4 (patch)
treeb57d532054be094db00d279b9ee8eef86ffc111a /kamon-core/src/main/scala/kamon/metric/Metric.scala
parentac08f9f5bac96858e0ff552fb8137c7d72904e1c (diff)
downloadKamon-c5621743ee7502c379367ff4bccf810f9a8a24d4.tar.gz
Kamon-c5621743ee7502c379367ff4bccf810f9a8a24d4.tar.bz2
Kamon-c5621743ee7502c379367ff4bccf810f9a8a24d4.zip
allow removal of instruments from a metric
Diffstat (limited to 'kamon-core/src/main/scala/kamon/metric/Metric.scala')
-rw-r--r--kamon-core/src/main/scala/kamon/metric/Metric.scala19
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