diff options
author | Ivan Topolnak <itopolnak@despegar.com> | 2014-02-03 18:10:08 -0300 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2014-02-04 09:18:08 -0300 |
commit | 462c41f32d9e9c3fd84d973a4b3ea4678537987b (patch) | |
tree | 47225d29f634e7a536efc7060d0740d5e7a575d7 /kamon-core/src/main/scala/kamon/metrics/MetricsExtension.scala | |
parent | 6b44762a034df9f63f6616b11762fb4ebaf92508 (diff) | |
download | Kamon-462c41f32d9e9c3fd84d973a4b3ea4678537987b.tar.gz Kamon-462c41f32d9e9c3fd84d973a4b3ea4678537987b.tar.bz2 Kamon-462c41f32d9e9c3fd84d973a4b3ea4678537987b.zip |
create the notion of a metric group category for easier filtering when subscribing
Diffstat (limited to 'kamon-core/src/main/scala/kamon/metrics/MetricsExtension.scala')
-rw-r--r-- | kamon-core/src/main/scala/kamon/metrics/MetricsExtension.scala | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/kamon-core/src/main/scala/kamon/metrics/MetricsExtension.scala b/kamon-core/src/main/scala/kamon/metrics/MetricsExtension.scala index a717e25a..a8b90b57 100644 --- a/kamon-core/src/main/scala/kamon/metrics/MetricsExtension.scala +++ b/kamon-core/src/main/scala/kamon/metrics/MetricsExtension.scala @@ -22,9 +22,7 @@ import com.typesafe.config.Config import kamon.util.GlobPathFilter import kamon.Kamon import akka.actor -import kamon.metrics.MetricGroupIdentity.Category import kamon.metrics.Metrics.MetricGroupFilter -import scala.Some import kamon.metrics.Subscriptions.Subscribe class MetricsExtension(val system: ExtendedActorSystem) extends Kamon.Extension { @@ -33,18 +31,18 @@ class MetricsExtension(val system: ExtendedActorSystem) extends Kamon.Extension val filters = loadFilters(config) lazy val subscriptions = system.actorOf(Props[Subscriptions], "kamon-metrics-subscriptions") - def register(name: String, category: MetricGroupIdentity.Category with MetricGroupFactory): Option[category.GroupRecorder] = { - if (shouldTrack(name, category)) - Some(storage.getOrElseUpdate(MetricGroupIdentity(name, category), category.create(config)).asInstanceOf[category.GroupRecorder]) + def register(identity: MetricGroupIdentity, factory: MetricGroupFactory): Option[factory.GroupRecorder] = { + if (shouldTrack(identity)) + Some(storage.getOrElseUpdate(identity, factory.create(config)).asInstanceOf[factory.GroupRecorder]) else None } - def unregister(name: String, category: MetricGroupIdentity.Category with MetricGroupFactory): Unit = { - storage.remove(MetricGroupIdentity(name, category)) + def unregister(identity: MetricGroupIdentity): Unit = { + storage.remove(identity) } - def subscribe(category: Category, selection: String, receiver: ActorRef, permanently: Boolean = false): Unit = { + def subscribe[C <: MetricGroupCategory](category: C, selection: String, receiver: ActorRef, permanently: Boolean = false): Unit = { subscriptions.tell(Subscribe(category, selection, permanently), receiver) } @@ -52,8 +50,8 @@ class MetricsExtension(val system: ExtendedActorSystem) extends Kamon.Extension (for ((identity, recorder) ← storage) yield (identity, recorder.collect)).toMap } - private def shouldTrack(name: String, category: MetricGroupIdentity.Category): Boolean = { - filters.get(category.entityName).map(filter ⇒ filter.accept(name)).getOrElse(false) + private def shouldTrack(identity: MetricGroupIdentity): Boolean = { + filters.get(identity.category.name).map(filter ⇒ filter.accept(identity.name)).getOrElse(false) } def loadFilters(config: Config): Map[String, MetricGroupFilter] = { |