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