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:
41
gold/link/zstd.go
Normal file
41
gold/link/zstd.go
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user