Path: blob/main/component/otelcol/config_compression.go
4095 views
package otelcol12import (3"encoding"4"fmt"56"go.opentelemetry.io/collector/config/configcompression"7)89// CompressionType represents a mechanism used to compress data.10type CompressionType string1112// Supported values for compression13const (14CompressionTypeGzip CompressionType = "gzip"15CompressionTypeZlib CompressionType = "zlib"16CompressionTypeDeflate CompressionType = "deflate"17CompressionTypeSnappy CompressionType = "snappy"18CompressionTypeZstd CompressionType = "zstd"19CompressionTypeNone CompressionType = "none"20CompressionTypeEmpty CompressionType = ""21)2223var _ encoding.TextUnmarshaler = (*CompressionType)(nil)2425// UnmarshalText converts a string into a CompressionType. Returns an error if26// the string is invalid.27func (ct *CompressionType) UnmarshalText(in []byte) error {28switch typ := CompressionType(in); typ {29case CompressionTypeGzip, CompressionTypeZlib, CompressionTypeDeflate,30CompressionTypeSnappy, CompressionTypeZstd, CompressionTypeNone, CompressionTypeEmpty:3132*ct = typ33return nil34default:35return fmt.Errorf("unrecognized compression type %q", typ)36}37}3839var compressionMappings = map[CompressionType]configcompression.CompressionType{40CompressionTypeGzip: configcompression.Gzip,41CompressionTypeZlib: configcompression.Zlib,42CompressionTypeDeflate: configcompression.Deflate,43CompressionTypeSnappy: configcompression.Snappy,44CompressionTypeZstd: configcompression.Zstd,45CompressionTypeNone: configcompression.CompressionType("none"),46CompressionTypeEmpty: configcompression.CompressionType(""),47}4849// Convert converts ct into the upstream type.50func (ct CompressionType) Convert() configcompression.CompressionType {51upstream, ok := compressionMappings[ct]52if !ok {53// This line should never hit unless compressionMappings wasn't updated54// when the list of valid options was extended.55panic("missing entry in compressionMappings table for " + string(ct))56}57return upstream58}596061