Files
WireGold/gold/link/zstd.go
2025-02-25 23:53:25 +09:00

42 lines
778 B
Go

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
}