@@ -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
7375object 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