Skip to content

Commit a51fb8b

Browse files
authored
Merge pull request #200 from vilunov/cats-effect-2-prefixed
Prefixed registries
2 parents 918f4f2 + 4955dba commit a51fb8b

File tree

2 files changed

+73
-2
lines changed

2 files changed

+73
-2
lines changed

build.sbt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ lazy val root = (project
1919
settings commonSettings
2020
settings (
2121
publish / skip := true,
22-
name := "smetrics")
22+
name := "smetrics-parent")
2323
aggregate(smetrics, prometheus, http4s, doobie, kafka))
2424

2525
lazy val smetrics = (project
@@ -68,4 +68,4 @@ lazy val doobie = (project
6868
dependsOn smetrics % "compile->compile;test->test"
6969
settings(
7070
name := "smetrics-doobie",
71-
libraryDependencies += Dependencies.doobie))
71+
libraryDependencies += Dependencies.doobie))

smetrics/src/main/scala/com/evolutiongaming/smetrics/CollectorRegistry.scala

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ trait CollectorRegistry[F[_]] {
6868
labels: A)(implicit
6969
magnet: LabelsMagnetInitialized[A, B]
7070
): Resource[F, B[Histogram[F]]]
71+
72+
def prefixed(prefix: String): CollectorRegistry[F] = new CollectorRegistry.Prefixed[F](this, prefix)
7173
}
7274

7375
object CollectorRegistry {
@@ -183,4 +185,73 @@ object CollectorRegistry {
183185
}
184186
}
185187
}
188+
189+
private class Prefixed[F[_]](private val delegate: CollectorRegistry[F], private val prefix: String)
190+
extends CollectorRegistry[F] {
191+
192+
private def prefixedName(name: String): String = s"${prefix}_$name"
193+
194+
def gauge[A, B[_]](
195+
name: String,
196+
help: String,
197+
labels: A)(implicit
198+
magnet: LabelsMagnet[A, B]
199+
): Resource[F, B[Gauge[F]]] = delegate.gauge(prefixedName(name), help, labels)
200+
201+
def gaugeInitialized[A, B[_]](
202+
name: String,
203+
help: String,
204+
labels: A)(implicit
205+
magnet: LabelsMagnetInitialized[A, B]
206+
): Resource[F, B[Gauge[F]]] = delegate.gaugeInitialized(prefixedName(name), help, labels)
207+
208+
209+
def counter[A, B[_]](
210+
name: String,
211+
help: String,
212+
labels: A)(implicit
213+
magnet: LabelsMagnet[A, B]
214+
): Resource[F, B[Counter[F]]] = delegate.counter(prefixedName(name), help, labels)
215+
216+
def counterInitialized[A, B[_]](
217+
name: String,
218+
help: String,
219+
labels: A)(implicit
220+
magnet: LabelsMagnetInitialized[A, B]
221+
): Resource[F, B[Counter[F]]] = delegate.counterInitialized(prefixedName(name), help, labels)
222+
223+
224+
def summary[A, B[_]](
225+
name: String,
226+
help: String,
227+
quantiles: Quantiles,
228+
labels: A)(implicit
229+
magnet: LabelsMagnet[A, B]
230+
): Resource[F, B[Summary[F]]] = delegate.summary(prefixedName(name), help, quantiles, labels)
231+
232+
def summaryInitialized[A, B[_]](
233+
name: String,
234+
help: String,
235+
quantiles: Quantiles,
236+
labels: A)(implicit
237+
magnet: LabelsMagnetInitialized[A, B]
238+
): Resource[F, B[Summary[F]]] = delegate.summaryInitialized(prefixedName(name), help, quantiles, labels)
239+
240+
241+
def histogram[A, B[_]](
242+
name: String,
243+
help: String,
244+
buckets: Buckets,
245+
labels: A)(implicit
246+
magnet: LabelsMagnet[A, B]
247+
): Resource[F, B[Histogram[F]]] = delegate.histogram(prefixedName(name), help, buckets, labels)
248+
249+
def histogramInitialized[A, B[_]](
250+
name: String,
251+
help: String,
252+
buckets: Buckets,
253+
labels: A)(implicit
254+
magnet: LabelsMagnetInitialized[A, B]
255+
): Resource[F, B[Histogram[F]]] = delegate.histogramInitialized(prefixedName(name), help, buckets, labels)
256+
}
186257
}

0 commit comments

Comments
 (0)