Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aos
GitHub Repository: aos/grafana-agent
Path: blob/main/component/otelcol/config_compression.go
4095 views
1
package otelcol
2
3
import (
4
"encoding"
5
"fmt"
6
7
"go.opentelemetry.io/collector/config/configcompression"
8
)
9
10
// CompressionType represents a mechanism used to compress data.
11
type CompressionType string
12
13
// Supported values for compression
14
const (
15
CompressionTypeGzip CompressionType = "gzip"
16
CompressionTypeZlib CompressionType = "zlib"
17
CompressionTypeDeflate CompressionType = "deflate"
18
CompressionTypeSnappy CompressionType = "snappy"
19
CompressionTypeZstd CompressionType = "zstd"
20
CompressionTypeNone CompressionType = "none"
21
CompressionTypeEmpty CompressionType = ""
22
)
23
24
var _ encoding.TextUnmarshaler = (*CompressionType)(nil)
25
26
// UnmarshalText converts a string into a CompressionType. Returns an error if
27
// the string is invalid.
28
func (ct *CompressionType) UnmarshalText(in []byte) error {
29
switch typ := CompressionType(in); typ {
30
case CompressionTypeGzip, CompressionTypeZlib, CompressionTypeDeflate,
31
CompressionTypeSnappy, CompressionTypeZstd, CompressionTypeNone, CompressionTypeEmpty:
32
33
*ct = typ
34
return nil
35
default:
36
return fmt.Errorf("unrecognized compression type %q", typ)
37
}
38
}
39
40
var compressionMappings = map[CompressionType]configcompression.CompressionType{
41
CompressionTypeGzip: configcompression.Gzip,
42
CompressionTypeZlib: configcompression.Zlib,
43
CompressionTypeDeflate: configcompression.Deflate,
44
CompressionTypeSnappy: configcompression.Snappy,
45
CompressionTypeZstd: configcompression.Zstd,
46
CompressionTypeNone: configcompression.CompressionType("none"),
47
CompressionTypeEmpty: configcompression.CompressionType(""),
48
}
49
50
// Convert converts ct into the upstream type.
51
func (ct CompressionType) Convert() configcompression.CompressionType {
52
upstream, ok := compressionMappings[ct]
53
if !ok {
54
// This line should never hit unless compressionMappings wasn't updated
55
// when the list of valid options was extended.
56
panic("missing entry in compressionMappings table for " + string(ct))
57
}
58
return upstream
59
}
60
61