mirror of https://github.com/grafana/loki
chore: Clarify compression package (#14257)
This PR renames "encoding" to "codec" in the compression package to remove the cognitive dissonance. It also removes the `Enc` prefix for codec identifiers, so that they adhere Go's best practice of naming conventions, e.g. `compression.EncGZIP` becomes `compression.GZIP` when used in a different package. Signed-off-by: Christian Haudum <christian.haudum@gmail.com>pull/14308/head
parent
84788ad2ae
commit
f52f8ad540
@ -0,0 +1,85 @@ |
||||
package compression |
||||
|
||||
import ( |
||||
"fmt" |
||||
"strings" |
||||
) |
||||
|
||||
// Codec identifies an available compression codec.
|
||||
type Codec byte |
||||
|
||||
// The different available codecs
|
||||
// Make sure to preserve the order, as the numeric values are serialized!
|
||||
//
|
||||
//nolint:revive
|
||||
const ( |
||||
None Codec = iota |
||||
GZIP |
||||
Dumb // not supported
|
||||
LZ4_64k |
||||
Snappy |
||||
LZ4_256k |
||||
LZ4_1M |
||||
LZ4_4M |
||||
Flate |
||||
Zstd |
||||
) |
||||
|
||||
var supportedCodecs = []Codec{ |
||||
None, |
||||
GZIP, |
||||
LZ4_64k, |
||||
Snappy, |
||||
LZ4_256k, |
||||
LZ4_1M, |
||||
LZ4_4M, |
||||
Flate, |
||||
Zstd, |
||||
} |
||||
|
||||
func (e Codec) String() string { |
||||
switch e { |
||||
case GZIP: |
||||
return "gzip" |
||||
case None: |
||||
return "none" |
||||
case LZ4_64k: |
||||
return "lz4-64k" |
||||
case LZ4_256k: |
||||
return "lz4-256k" |
||||
case LZ4_1M: |
||||
return "lz4-1M" |
||||
case LZ4_4M: |
||||
return "lz4" |
||||
case Snappy: |
||||
return "snappy" |
||||
case Flate: |
||||
return "flate" |
||||
case Zstd: |
||||
return "zstd" |
||||
default: |
||||
return "unknown" |
||||
} |
||||
} |
||||
|
||||
// ParseCodec parses a chunk encoding (compression codec) by its name.
|
||||
func ParseCodec(enc string) (Codec, error) { |
||||
for _, e := range supportedCodecs { |
||||
if strings.EqualFold(e.String(), enc) { |
||||
return e, nil |
||||
} |
||||
} |
||||
return 0, fmt.Errorf("invalid encoding: %s, supported: %s", enc, SupportedCodecs()) |
||||
} |
||||
|
||||
// SupportedCodecs returns the list of supported Encoding.
|
||||
func SupportedCodecs() string { |
||||
var sb strings.Builder |
||||
for i := range supportedCodecs { |
||||
sb.WriteString(supportedCodecs[i].String()) |
||||
if i != len(supportedCodecs)-1 { |
||||
sb.WriteString(", ") |
||||
} |
||||
} |
||||
return sb.String() |
||||
} |
||||
@ -1,83 +0,0 @@ |
||||
package compression |
||||
|
||||
import ( |
||||
"fmt" |
||||
"strings" |
||||
) |
||||
|
||||
// Encoding identifies an available compression type.
|
||||
type Encoding byte |
||||
|
||||
// The different available encodings.
|
||||
// Make sure to preserve the order, as the numeric values are serialized!
|
||||
const ( |
||||
EncNone Encoding = iota |
||||
EncGZIP |
||||
EncDumb // not supported
|
||||
EncLZ4_64k |
||||
EncSnappy |
||||
EncLZ4_256k |
||||
EncLZ4_1M |
||||
EncLZ4_4M |
||||
EncFlate |
||||
EncZstd |
||||
) |
||||
|
||||
var supportedEncoding = []Encoding{ |
||||
EncNone, |
||||
EncGZIP, |
||||
EncLZ4_64k, |
||||
EncSnappy, |
||||
EncLZ4_256k, |
||||
EncLZ4_1M, |
||||
EncLZ4_4M, |
||||
EncFlate, |
||||
EncZstd, |
||||
} |
||||
|
||||
func (e Encoding) String() string { |
||||
switch e { |
||||
case EncGZIP: |
||||
return "gzip" |
||||
case EncNone: |
||||
return "none" |
||||
case EncLZ4_64k: |
||||
return "lz4-64k" |
||||
case EncLZ4_256k: |
||||
return "lz4-256k" |
||||
case EncLZ4_1M: |
||||
return "lz4-1M" |
||||
case EncLZ4_4M: |
||||
return "lz4" |
||||
case EncSnappy: |
||||
return "snappy" |
||||
case EncFlate: |
||||
return "flate" |
||||
case EncZstd: |
||||
return "zstd" |
||||
default: |
||||
return "unknown" |
||||
} |
||||
} |
||||
|
||||
// ParseEncoding parses an chunk encoding (compression algorithm) by its name.
|
||||
func ParseEncoding(enc string) (Encoding, error) { |
||||
for _, e := range supportedEncoding { |
||||
if strings.EqualFold(e.String(), enc) { |
||||
return e, nil |
||||
} |
||||
} |
||||
return 0, fmt.Errorf("invalid encoding: %s, supported: %s", enc, SupportedEncoding()) |
||||
} |
||||
|
||||
// SupportedEncoding returns the list of supported Encoding.
|
||||
func SupportedEncoding() string { |
||||
var sb strings.Builder |
||||
for i := range supportedEncoding { |
||||
sb.WriteString(supportedEncoding[i].String()) |
||||
if i != len(supportedEncoding)-1 { |
||||
sb.WriteString(", ") |
||||
} |
||||
} |
||||
return sb.String() |
||||
} |
||||
Loading…
Reference in new issue