This is an automated email from the ASF dual-hosted git repository.
tew pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-seata-go.git
The following commit(s) were added to refs/heads/master by this push:
new 4bdc7fff feat: Support snappy compression type (#1027)
4bdc7fff is described below
commit 4bdc7fff4e4c8dd5ed5d75e59f02e9f410e3df1f
Author: xuzifu666 <[email protected]>
AuthorDate: Fri Dec 19 11:24:03 2025 +0800
feat: Support snappy compression type (#1027)
Co-authored-by: TewGuo <[email protected]>
---
pkg/compressor/compressor_type.go | 3 ++
.../{compressor_type.go => snappy_compress.go} | 48 ++++++++-------------
...{compressor_type.go => snappy_compress_test.go} | 50 ++++++++--------------
3 files changed, 40 insertions(+), 61 deletions(-)
diff --git a/pkg/compressor/compressor_type.go
b/pkg/compressor/compressor_type.go
index 44b19d11..0936eef5 100644
--- a/pkg/compressor/compressor_type.go
+++ b/pkg/compressor/compressor_type.go
@@ -29,6 +29,7 @@ const (
CompressorLz4 CompressorType = "Lz4"
CompressorDeflate CompressorType = "Deflate"
CompressorZstd CompressorType = "Zstd"
+ CompressorSnappy CompressorType = "Snappy"
)
func (c CompressorType) GetCompressor() Compressor {
@@ -45,6 +46,8 @@ func (c CompressorType) GetCompressor() Compressor {
return &Lz4{}
case CompressorZstd:
return &Zstd{}
+ case CompressorSnappy:
+ return &Snappy{}
case CompressorDeflate:
return &DeflateCompress{}
default:
diff --git a/pkg/compressor/compressor_type.go
b/pkg/compressor/snappy_compress.go
similarity index 50%
copy from pkg/compressor/compressor_type.go
copy to pkg/compressor/snappy_compress.go
index 44b19d11..04652923 100644
--- a/pkg/compressor/compressor_type.go
+++ b/pkg/compressor/snappy_compress.go
@@ -17,37 +17,25 @@
package compressor
-type CompressorType string
-
-const (
- // "None" means no compressor is used
- CompressorNone CompressorType = "None"
- CompressorGzip CompressorType = "Gzip"
- CompressorZip CompressorType = "Zip"
- CompressorSevenz CompressorType = "Sevenz"
- CompressorBzip2 CompressorType = "Bzip2"
- CompressorLz4 CompressorType = "Lz4"
- CompressorDeflate CompressorType = "Deflate"
- CompressorZstd CompressorType = "Zstd"
+import (
+ "github.com/golang/snappy"
)
-func (c CompressorType) GetCompressor() Compressor {
- switch c {
- case CompressorNone:
- return &NoneCompressor{}
- case CompressorGzip:
- return &Gzip{}
- case CompressorZip:
- return &Zip{}
- case CompressorBzip2:
- return &Bzip2{}
- case CompressorLz4:
- return &Lz4{}
- case CompressorZstd:
- return &Zstd{}
- case CompressorDeflate:
- return &DeflateCompress{}
- default:
- return &NoneCompressor{}
+type Snappy struct{}
+
+func (s Snappy) Compress(data []byte) ([]byte, error) {
+ compressed := snappy.Encode(nil, data)
+ return compressed, nil
+}
+
+func (s Snappy) Decompress(data []byte) ([]byte, error) {
+ decompressed, err := snappy.Decode(nil, data)
+ if err != nil {
+ return nil, err
}
+ return decompressed, nil
+}
+
+func (z Snappy) GetCompressorType() CompressorType {
+ return CompressorSnappy
}
diff --git a/pkg/compressor/compressor_type.go
b/pkg/compressor/snappy_compress_test.go
similarity index 50%
copy from pkg/compressor/compressor_type.go
copy to pkg/compressor/snappy_compress_test.go
index 44b19d11..44ad2cd1 100644
--- a/pkg/compressor/compressor_type.go
+++ b/pkg/compressor/snappy_compress_test.go
@@ -17,37 +17,25 @@
package compressor
-type CompressorType string
-
-const (
- // "None" means no compressor is used
- CompressorNone CompressorType = "None"
- CompressorGzip CompressorType = "Gzip"
- CompressorZip CompressorType = "Zip"
- CompressorSevenz CompressorType = "Sevenz"
- CompressorBzip2 CompressorType = "Bzip2"
- CompressorLz4 CompressorType = "Lz4"
- CompressorDeflate CompressorType = "Deflate"
- CompressorZstd CompressorType = "Zstd"
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
)
-func (c CompressorType) GetCompressor() Compressor {
- switch c {
- case CompressorNone:
- return &NoneCompressor{}
- case CompressorGzip:
- return &Gzip{}
- case CompressorZip:
- return &Zip{}
- case CompressorBzip2:
- return &Bzip2{}
- case CompressorLz4:
- return &Lz4{}
- case CompressorZstd:
- return &Zstd{}
- case CompressorDeflate:
- return &DeflateCompress{}
- default:
- return &NoneCompressor{}
- }
+func TestSnappyCompress(t *testing.T) {
+ str := "test"
+ s := &Snappy{}
+
+ compressRes, err := s.Compress([]byte(str))
+ assert.NoError(t, err)
+ t.Logf("compress res: %v", string(compressRes))
+
+ assert.EqualValues(t, CompressorSnappy, s.GetCompressorType())
+
+ decompressRes, err := s.Decompress(compressRes)
+ assert.NoError(t, err)
+ t.Logf("decompress res: %v", string(decompressRes))
+
+ assert.Equal(t, str, string(decompressRes))
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]