mirror of
https://github.com/fumiama/WireGold.git
synced 2025-09-26 19:21:11 +08:00
42 lines
778 B
Go
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
|
|
}
|