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]

Reply via email to