1
0
mirror of https://github.com/fumiama/WireGold.git synced 2026-06-18 08:50:25 +08:00

optimize(link): pack zstd en/decoding

This commit is contained in:
源文雨
2025-02-25 23:53:25 +09:00
parent 597fa8d048
commit fa7b9d4f0a
8 changed files with 58 additions and 34 deletions

41
gold/link/zstd.go Normal file
View File

@@ -0,0 +1,41 @@
package link
import (
"bytes"
"io"
"github.com/fumiama/WireGold/helper"
"github.com/fumiama/orbyte/pbuf"
"github.com/klauspost/compress/zstd"
)
func encodezstd(data []byte) pbuf.Bytes {
w := helper.SelectWriter()
enc, err := zstd.NewWriter(w, zstd.WithEncoderLevel(zstd.SpeedFastest))
if err != nil {
panic(err)
}
_, err = io.Copy(enc, bytes.NewReader(data))
if err != nil {
panic(err)
}
err = enc.Close()
if err != nil {
panic(err)
}
return w.TransBytes()
}
func decodezstd(data []byte) (pbuf.Bytes, error) {
dec, err := zstd.NewReader(bytes.NewReader(data))
if err != nil {
return pbuf.Bytes{}, err
}
w := helper.SelectWriter()
_, err = io.Copy(w, dec)
dec.Close()
if err != nil {
return pbuf.Bytes{}, err
}
return w.TransBytes(), nil
}