aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/metric/RecorderRegistry.scala
diff options
context:
space:
mode:
Diffstat (limited to 'kamon-core/src/main/scala/kamon/metric/RecorderRegistry.scala')
-rw-r--r--kamon-core/src/main/scala/kamon/metric/RecorderRegistry.scala44
1 files changed, 44 insertions, 0 deletions
diff --git a/kamon-core/src/main/scala/kamon/metric/RecorderRegistry.scala b/kamon-core/src/main/scala/kamon/metric/RecorderRegistry.scala
new file mode 100644
index 00000000..99974032
--- /dev/null
+++ b/kamon-core/src/main/scala/kamon/metric/RecorderRegistry.scala
@@ -0,0 +1,44 @@
+package kamon
+package metric
+
+import com.typesafe.config.Config
+import kamon.metric.instrument.InstrumentFactory
+
+import scala.collection.concurrent.TrieMap
+
+
+trait RecorderRegistry {
+ def getRecorder(entity: Entity): EntityRecorder
+ def getRecorder(name: String, category: String, tags: Map[String, String]): EntityRecorder
+
+ def removeRecorder(entity: Entity): Boolean
+ def removeRecorder(name: String, category: String, tags: Map[String, String]): Boolean
+}
+
+class RecorderRegistryImpl(config: Config) extends RecorderRegistry {
+ private val instrumentFactory = InstrumentFactory(config.getConfig("kamon.metric.instrument-factory"))
+ private val entities = TrieMap.empty[Entity, EntityRecorder with EntitySnapshotProducer]
+
+ override def getRecorder(entity: Entity): EntityRecorder = {
+ entities.atomicGetOrElseUpdate(entity, new DefaultEntityRecorder(entity, instrumentFactory))
+ }
+
+ override def getRecorder(name: String, category: String, tags: Map[String, String]): EntityRecorder = ???
+
+ override def removeRecorder(entity: Entity): Boolean = ???
+
+ override def removeRecorder(name: String, category: String, tags: Map[String, String]): Boolean = ???
+
+ private[kamon] def snapshot(): Seq[EntitySnapshot] = {
+ entities.values.map(_.snapshot()).toSeq
+ }
+}
+
+
+
+
+
+
+
+
+