compression

package
v0.4.0-alpha.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 20, 2024 License: MPL-2.0 Imports: 5 Imported by: 0

Documentation

Overview

Package compression provides compression support for store.Marshaler.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Compressor

type Compressor interface {
	Compress(prefix, data []byte) ([]byte, error)
	Decompress(data []byte) ([]byte, error)
	ID() byte
}

Compressor defines interface for compression and decompression.

func ZStd

func ZStd() Compressor

ZStd returns zstd compressor.

type Marshaler

type Marshaler struct {
	// contains filtered or unexported fields
}

Marshaler compresses and decompresses data from the underlying marshaler.

Marshaler also handles case when the underlying data is not compressed.

The trick used is that `0x00` can't start a valid protobuf message, so we use `0x00` as a marker for compressed data.

func NewMarshaler

func NewMarshaler(m store.Marshaler, c Compressor, minSize int) *Marshaler

NewMarshaler creates new Marshaler.

func (*Marshaler) MarshalResource

func (m *Marshaler) MarshalResource(r resource.Resource) ([]byte, error)

MarshalResource implements Marshaler interface.

func (*Marshaler) UnmarshalResource

func (m *Marshaler) UnmarshalResource(b []byte) (resource.Resource, error)

UnmarshalResource implements Marshaler interface.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL