Documentation
¶
Overview ¶
Package codec provides abstractions and implementations for payload encoding and decoding.
The package defines common interfaces for streaming and byte-based codecs that can be used by transports such as HTTP, gRPC, and AMQP. It also provides a reusable Zstandard (zstd) implementation with encoder pooling for efficient compression.
Codecs support both streaming APIs (io.Reader/io.Writer) and in-memory byte slice operations, allowing the same implementation to be reused across different transports and middleware.
Example usage:
codec := codec.Default
// Encode bytes.
encoded, err := codec.EncodeBytes(data)
if err != nil {
log.Fatal(err)
}
// Decode bytes.
plain, err := codec.DecodeBytes(encoded)
if err != nil {
log.Fatal(err)
}
Index ¶
Constants ¶
const ( ZstdSpeedFastest = zstd.SpeedFastest ZstdSpeedDefault = zstd.SpeedDefault ZstdSpeedBetterCompression = zstd.SpeedBetterCompression ZstdSpeedBestCompression = zstd.SpeedBestCompression )
const DefaultEncodeThreshold = 128 * 1024
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Codec ¶
type Codec interface {
Type() string
EncodeBytes(b []byte) ([]byte, error)
DecodeBytes(b []byte) ([]byte, error)
Encode(w io.Writer) (io.WriteCloser, error)
Decode(rc io.ReadCloser) (io.ReadCloser, error)
}
var ( Default Codec = NewZstd(ZstdConfig{ Level: ZstdLevel(ZstdSpeedDefault), }) )
type Zstd ¶
type Zstd struct {
// contains filtered or unexported fields
}
func (*Zstd) Decode ¶
func (m *Zstd) Decode(body io.ReadCloser) (io.ReadCloser, error)
Decode wraps body with a zstd decoder.
func (*Zstd) DecodeBytes ¶
DecodeBytes decodes bytes body using zstd.
func (*Zstd) EncodeBytes ¶
EncodeBytes encode data using zstd.
type ZstdConfig ¶
type ZstdConfig struct {
Level ZstdLevel
}
type ZstdLevel ¶
type ZstdLevel zstd.EncoderLevel
Level is an alias for zstd.EncoderLevel representing encoder compression levels.