package zim import ( "io" "github.com/klauspost/compress/zstd" "github.com/pkg/errors" ) type ZstdBlobReader struct { decoder *zstd.Decoder } // Close implements io.ReadCloser. func (r *ZstdBlobReader) Close() error { r.decoder.Close() return nil } // Read implements io.ReadCloser. func (r *ZstdBlobReader) Read(p []byte) (n int, err error) { return r.decoder.Read(p) } var _ io.ReadCloser = &ZstdBlobReader{} func NewZStdBlobReader(reader *Reader, clusterStartOffset, clusterEndOffset uint64, blobIndex uint32, blobSize int) *CompressedBlobReader { return NewCompressedBlobReader( reader, func(r io.Reader) (io.ReadCloser, error) { decoder, err := zstd.NewReader(r) if err != nil { return nil, errors.WithStack(err) } return &ZstdBlobReader{decoder}, nil }, clusterStartOffset, clusterEndOffset, blobIndex, blobSize, ) }