mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2024-11-30 15:42:46 +00:00
60 lines
2.1 KiB
Go
60 lines
2.1 KiB
Go
|
// Copyright 2011 The Snappy-Go Authors. All rights reserved.
|
||
|
// Use of this source code is governed by a BSD-style
|
||
|
// license that can be found in the LICENSE file.
|
||
|
|
||
|
package snappy
|
||
|
|
||
|
import (
|
||
|
"io"
|
||
|
|
||
|
"github.com/klauspost/compress/s2"
|
||
|
)
|
||
|
|
||
|
// Encode returns the encoded form of src. The returned slice may be a sub-
|
||
|
// slice of dst if dst was large enough to hold the entire encoded block.
|
||
|
// Otherwise, a newly allocated slice will be returned.
|
||
|
//
|
||
|
// The dst and src must not overlap. It is valid to pass a nil dst.
|
||
|
//
|
||
|
// Encode handles the Snappy block format, not the Snappy stream format.
|
||
|
func Encode(dst, src []byte) []byte {
|
||
|
return s2.EncodeSnappyBetter(dst, src)
|
||
|
}
|
||
|
|
||
|
// MaxEncodedLen returns the maximum length of a snappy block, given its
|
||
|
// uncompressed length.
|
||
|
//
|
||
|
// It will return a negative value if srcLen is too large to encode.
|
||
|
func MaxEncodedLen(srcLen int) int {
|
||
|
return s2.MaxEncodedLen(srcLen)
|
||
|
}
|
||
|
|
||
|
// NewWriter returns a new Writer that compresses to w.
|
||
|
//
|
||
|
// The Writer returned does not buffer writes. There is no need to Flush or
|
||
|
// Close such a Writer.
|
||
|
//
|
||
|
// Deprecated: the Writer returned is not suitable for many small writes, only
|
||
|
// for few large writes. Use NewBufferedWriter instead, which is efficient
|
||
|
// regardless of the frequency and shape of the writes, and remember to Close
|
||
|
// that Writer when done.
|
||
|
func NewWriter(w io.Writer) *Writer {
|
||
|
return s2.NewWriter(w, s2.WriterSnappyCompat(), s2.WriterBetterCompression(), s2.WriterFlushOnWrite(), s2.WriterConcurrency(1))
|
||
|
}
|
||
|
|
||
|
// NewBufferedWriter returns a new Writer that compresses to w, using the
|
||
|
// framing format described at
|
||
|
// https://github.com/google/snappy/blob/master/framing_format.txt
|
||
|
//
|
||
|
// The Writer returned buffers writes. Users must call Close to guarantee all
|
||
|
// data has been forwarded to the underlying io.Writer. They may also call
|
||
|
// Flush zero or more times before calling Close.
|
||
|
func NewBufferedWriter(w io.Writer) *Writer {
|
||
|
return s2.NewWriter(w, s2.WriterSnappyCompat(), s2.WriterBetterCompression())
|
||
|
}
|
||
|
|
||
|
// Writer is an io.Writer that can write Snappy-compressed bytes.
|
||
|
//
|
||
|
// Writer handles the Snappy stream format, not the Snappy block format.
|
||
|
type Writer = s2.Writer
|