File tree Expand file tree Collapse file tree 1 file changed +25
-4
lines changed Expand file tree Collapse file tree 1 file changed +25
-4
lines changed Original file line number Diff line number Diff line change 4
4
"io"
5
5
"sync"
6
6
7
+ "github.com/klauspost/compress/s2"
7
8
"github.com/klauspost/compress/snappy"
8
9
)
9
10
@@ -16,6 +17,16 @@ const (
16
17
Unframed
17
18
)
18
19
20
+ // Compression level.
21
+ type Compression int
22
+
23
+ const (
24
+ DefaultCompression Compression = iota
25
+ FasterCompression
26
+ BetterCompression
27
+ BestCompression
28
+ )
29
+
19
30
var (
20
31
readerPool sync.Pool
21
32
writerPool sync.Pool
@@ -28,6 +39,9 @@ type Codec struct {
28
39
//
29
40
// Default to Framed.
30
41
Framing Framing
42
+
43
+ // Compression level.
44
+ Compression Compression
31
45
}
32
46
33
47
// Code implements the compress.Codec interface.
@@ -56,12 +70,19 @@ func (c *Codec) NewWriter(w io.Writer) io.WriteCloser {
56
70
if x != nil {
57
71
x .Reset (w )
58
72
} else {
59
- x = & xerialWriter {
60
- writer : w ,
61
- encode : snappy .Encode ,
62
- }
73
+ x = & xerialWriter {writer : w }
63
74
}
64
75
x .framed = c .Framing == Framed
76
+ switch c .Compression {
77
+ case FasterCompression :
78
+ x .encode = s2 .EncodeSnappy
79
+ case BetterCompression :
80
+ x .encode = s2 .EncodeSnappyBetter
81
+ case BestCompression :
82
+ x .encode = s2 .EncodeSnappyBest
83
+ default :
84
+ x .encode = snappy .Encode // aka. s2.EncodeSnappyBetter
85
+ }
65
86
return & writer {xerialWriter : x }
66
87
}
67
88
You can’t perform that action at this time.
0 commit comments