gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

encode.go (2176B)


      1 // Copyright 2011 The Snappy-Go Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style
      3 // license that can be found in the LICENSE file.
      4 
      5 package snappy
      6 
      7 import (
      8 	"io"
      9 
     10 	"github.com/klauspost/compress/s2"
     11 )
     12 
     13 // Encode returns the encoded form of src. The returned slice may be a sub-
     14 // slice of dst if dst was large enough to hold the entire encoded block.
     15 // Otherwise, a newly allocated slice will be returned.
     16 //
     17 // The dst and src must not overlap. It is valid to pass a nil dst.
     18 //
     19 // Encode handles the Snappy block format, not the Snappy stream format.
     20 func Encode(dst, src []byte) []byte {
     21 	return s2.EncodeSnappyBetter(dst, src)
     22 }
     23 
     24 // MaxEncodedLen returns the maximum length of a snappy block, given its
     25 // uncompressed length.
     26 //
     27 // It will return a negative value if srcLen is too large to encode.
     28 func MaxEncodedLen(srcLen int) int {
     29 	return s2.MaxEncodedLen(srcLen)
     30 }
     31 
     32 // NewWriter returns a new Writer that compresses to w.
     33 //
     34 // The Writer returned does not buffer writes. There is no need to Flush or
     35 // Close such a Writer.
     36 //
     37 // Deprecated: the Writer returned is not suitable for many small writes, only
     38 // for few large writes. Use NewBufferedWriter instead, which is efficient
     39 // regardless of the frequency and shape of the writes, and remember to Close
     40 // that Writer when done.
     41 func NewWriter(w io.Writer) *Writer {
     42 	return s2.NewWriter(w, s2.WriterSnappyCompat(), s2.WriterBetterCompression(), s2.WriterFlushOnWrite(), s2.WriterConcurrency(1))
     43 }
     44 
     45 // NewBufferedWriter returns a new Writer that compresses to w, using the
     46 // framing format described at
     47 // https://github.com/google/snappy/blob/master/framing_format.txt
     48 //
     49 // The Writer returned buffers writes. Users must call Close to guarantee all
     50 // data has been forwarded to the underlying io.Writer. They may also call
     51 // Flush zero or more times before calling Close.
     52 func NewBufferedWriter(w io.Writer) *Writer {
     53 	return s2.NewWriter(w, s2.WriterSnappyCompat(), s2.WriterBetterCompression())
     54 }
     55 
     56 // Writer is an io.Writer that can write Snappy-compressed bytes.
     57 //
     58 // Writer handles the Snappy stream format, not the Snappy block format.
     59 type Writer = s2.Writer