/
compress.go
69 lines (61 loc) · 1.63 KB
/
compress.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
60
61
62
63
64
65
66
67
68
69
//
// Copyright (C) 2019-2020 Vdaas.org Vald team ( kpango, rinx, kmrmt )
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// Package config providers configuration type and load configuration logic
package config
import "strings"
type compressAlgorithm uint8
const (
GOB compressAlgorithm = iota
GZIP
LZ4
ZSTD
)
func (ca compressAlgorithm) String() string {
switch ca {
case GOB:
return "gob"
case GZIP:
return "gzip"
case LZ4:
return "lz4"
case ZSTD:
return "zstd"
}
return "unknown"
}
func CompressAlgorithm(ca string) compressAlgorithm {
switch strings.ToLower(ca) {
case "gob":
return GOB
case "gzip":
return GZIP
case "lz4":
return LZ4
case "zstd":
return ZSTD
}
return 0
}
type Compressor struct {
CompressAlgorithm string `json:"compress_algorithm" yaml:"compress_algorithm"`
CompressionLevel int `json:"compression_level" yaml:"compression_level"`
ConcurrentLimit int `json:"concurrent_limit" yaml:"concurrent_limit"`
Buffer int `json:"buffer" yaml:"buffer"`
}
func (c *Compressor) Bind() *Compressor {
c.CompressAlgorithm = GetActualValue(c.CompressAlgorithm)
return c
}