MCPcopy Create free account
hub / github.com/prometheus/common / NewEncoder

Function NewEncoder

expfmt/encode.go:119–166  ·  view source on GitHub ↗

NewEncoder returns a new encoder based on content type negotiation. All Encoder implementations returned by NewEncoder also implement Closer, and callers should always call the Close method. It is currently only required for FmtOpenMetrics, but a future (breaking) release will add the Close method t

(w io.Writer, format Format)

Source from the content-addressed store, hash-verified

117// to the Encoder interface directly. The current version of the Encoder
118// interface is kept for backwards compatibility.
119func NewEncoder(w io.Writer, format Format) Encoder {
120 switch format {
121 case FmtProtoDelim:
122 return encoderCloser{
123 encode: func(v *dto.MetricFamily) error {
124 _, err := protodelim.MarshalTo(w, v)
125 return err
126 },
127 close: func() error { return nil },
128 }
129 case FmtProtoCompact:
130 return encoderCloser{
131 encode: func(v *dto.MetricFamily) error {
132 _, err := fmt.Fprintln(w, v.String())
133 return err
134 },
135 close: func() error { return nil },
136 }
137 case FmtProtoText:
138 return encoderCloser{
139 encode: func(v *dto.MetricFamily) error {
140 _, err := fmt.Fprintln(w, prototext.Format(v))
141 return err
142 },
143 close: func() error { return nil },
144 }
145 case FmtText:
146 return encoderCloser{
147 encode: func(v *dto.MetricFamily) error {
148 _, err := MetricFamilyToText(w, v)
149 return err
150 },
151 close: func() error { return nil },
152 }
153 case FmtOpenMetrics_0_0_1, FmtOpenMetrics_1_0_0:
154 return encoderCloser{
155 encode: func(v *dto.MetricFamily) error {
156 _, err := MetricFamilyToOpenMetrics(w, v)
157 return err
158 },
159 close: func() error {
160 _, err := FinalizeOpenMetrics(w)
161 return err
162 },
163 }
164 }
165 panic(fmt.Errorf("expfmt.NewEncoder: unknown format %q", format))
166}

Callers 1

TestEncodeFunction · 0.85

Calls 4

MetricFamilyToTextFunction · 0.85
FinalizeOpenMetricsFunction · 0.85
StringMethod · 0.65

Tested by 1

TestEncodeFunction · 0.68