compression

package
v5.33.0 Latest Latest
Warning

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

Go to latest
Published: Nov 8, 2024 License: Apache-2.0 Imports: 11 Imported by: 31

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// Gzip compression.
	Gzip = internal.NewAlgorithm(types.GzipAlgorithmName, "",
		[]byte{0x1F, 0x8B, 0x08}, GzipDecompressor, gzipCompressor)
	// Bzip2 compression.
	Bzip2 = internal.NewAlgorithm(types.Bzip2AlgorithmName, "",
		[]byte{0x42, 0x5A, 0x68}, Bzip2Decompressor, bzip2Compressor)
	// Xz compression.
	Xz = internal.NewAlgorithm(types.XzAlgorithmName, "",
		[]byte{0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00}, XzDecompressor, xzCompressor)
	// Zstd compression.
	Zstd = internal.NewAlgorithm(types.ZstdAlgorithmName, "",
		[]byte{0x28, 0xb5, 0x2f, 0xfd}, ZstdDecompressor, zstdCompressor)
	// ZstdChunked is a Zstd compression with chunk metadata which allows random access to individual files.
	ZstdChunked = internal.NewAlgorithm(types.ZstdChunkedAlgorithmName, types.ZstdAlgorithmName,
		nil, ZstdDecompressor, compressor.ZstdCompressor)
)

Functions

func AutoDecompress

func AutoDecompress(stream io.Reader) (io.ReadCloser, bool, error)

AutoDecompress takes a stream and returns an uncompressed version of the same stream. The caller must call Close() on the returned stream (even if the input does not need, or does not even support, closing!).

func Bzip2Decompressor

func Bzip2Decompressor(r io.Reader) (io.ReadCloser, error)

Bzip2Decompressor is a DecompressorFunc for the bzip2 compression algorithm.

func CompressStream

func CompressStream(dest io.Writer, algo Algorithm, level *int) (io.WriteCloser, error)

CompressStream returns the compressor by its name

func CompressStreamWithMetadata added in v5.14.0

func CompressStreamWithMetadata(dest io.Writer, metadata map[string]string, algo Algorithm, level *int) (io.WriteCloser, error)

CompressStreamWithMetadata returns the compressor by its name.

Compressing a stream may create integrity data that allows consuming the compressed byte stream while only using subsets of the compressed data (if the compressed data is seekable and most of the uncompressed data is already present via other means), while still protecting integrity of the compressed stream against unwanted modification. (In OCI container images, this metadata is usually carried in manifest annotations.)

Such a partial decompression is not implemented by this package; it is consumed e.g. by github.com/containers/storage/pkg/chunked .

If the compression generates such metadata, it is written to the provided metadata map.

func DetectCompressionFormat

func DetectCompressionFormat(input io.Reader) (Algorithm, DecompressorFunc, io.Reader, error)

DetectCompressionFormat returns an Algorithm and DecompressorFunc if the input is recognized as a compressed format, an invalid value and nil otherwise. Because it consumes the start of input, other consumers must use the returned io.Reader instead to also read from the beginning.

func GzipDecompressor

func GzipDecompressor(r io.Reader) (io.ReadCloser, error)

GzipDecompressor is a DecompressorFunc for the gzip compression algorithm.

func XzDecompressor

func XzDecompressor(r io.Reader) (io.ReadCloser, error)

XzDecompressor is a DecompressorFunc for the xz compression algorithm.

func ZstdDecompressor

func ZstdDecompressor(r io.Reader) (io.ReadCloser, error)

ZstdDecompressor is a DecompressorFunc for the zstd compression algorithm.

Types

type Algorithm

type Algorithm = types.Algorithm

Algorithm is a compression algorithm that can be used for CompressStream.

func AlgorithmByName

func AlgorithmByName(name string) (Algorithm, error)

AlgorithmByName returns the compressor by its name

type DecompressorFunc

type DecompressorFunc = internal.DecompressorFunc

DecompressorFunc returns the decompressed stream, given a compressed stream. The caller must call Close() on the decompressed stream (even if the compressed input stream does not need closing!).

func DetectCompression

func DetectCompression(input io.Reader) (DecompressorFunc, io.Reader, error)

DetectCompression returns a DecompressorFunc if the input is recognized as a compressed format, nil otherwise. Because it consumes the start of input, other consumers must use the returned io.Reader instead to also read from the beginning.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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