001package io.prometheus.client.dropwizard.samplebuilder;
002
003import io.prometheus.client.Collector;
004
005import java.util.List;
006
007/**
008 * SampleBuilder defines the action of creating a {@link io.prometheus.client.Collector.MetricFamilySamples.Sample} for the given parameters.
009 */
010public interface SampleBuilder {
011
012    /**
013     * Creates a new {@link io.prometheus.client.Collector.MetricFamilySamples.Sample} for the given parameters.
014     *
015     * @param dropwizardName        Metric name coming from Dropwizard.
016     * @param nameSuffix            Optional suffix to add.
017     * @param additionalLabelNames  Optional additional label names. Needs to have same size as additionalLabelValues.
018     * @param additionalLabelValues Optional additional label values. Needs to have same size as additionalLabelNames.
019     * @param value                 Metric value
020     * @return A new {@link io.prometheus.client.Collector.MetricFamilySamples.Sample}.
021     */
022    Collector.MetricFamilySamples.Sample createSample(String dropwizardName, String nameSuffix, List<String> additionalLabelNames, List<String> additionalLabelValues, double value);
023}