Skip to content

Commit

Permalink
expfmt/encoder: Allow opt-in for OM created lines
Browse files Browse the repository at this point in the history
Signed-off-by: Arthur Silva Sens <arthur.sens@coralogix.com>
  • Loading branch information
ArthurSens committed Dec 12, 2023
1 parent 913b8f0 commit d3383ad
Showing 1 changed file with 18 additions and 1 deletion.
19 changes: 18 additions & 1 deletion expfmt/encode.go
Expand Up @@ -115,7 +115,12 @@ func NegotiateIncludingOpenMetrics(h http.Header) Format {
// for FmtOpenMetrics, but a future (breaking) release will add the Close method
// to the Encoder interface directly. The current version of the Encoder
// interface is kept for backwards compatibility.
func NewEncoder(w io.Writer, format Format) Encoder {
func NewEncoder(w io.Writer, format Format, options ...ToOpenMetricsOption) Encoder {
toOM := toOpenMetrics{}
for _, opt := range options {
opt(&toOM)
}

switch format {
case FmtProtoDelim:
return encoderCloser{
Expand Down Expand Up @@ -150,6 +155,18 @@ func NewEncoder(w io.Writer, format Format) Encoder {
close: func() error { return nil },
}
case FmtOpenMetrics_0_0_1, FmtOpenMetrics_1_0_0:
if toOM.withCreatedLines {
return encoderCloser{
encode: func(v *dto.MetricFamily) error {
_, err := MetricFamilyToOpenMetrics(w, v, WithCreatedLines())
return err
},
close: func() error {
_, err := FinalizeOpenMetrics(w)
return err
},
}
}
return encoderCloser{
encode: func(v *dto.MetricFamily) error {
_, err := MetricFamilyToOpenMetrics(w, v)
Expand Down

0 comments on commit d3383ad

Please sign in to comment.