summaryrefslogtreecommitdiff
path: root/vendor/github.com/klauspost/compress/snappy/decode.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/klauspost/compress/snappy/decode.go')
-rw-r--r--vendor/github.com/klauspost/compress/snappy/decode.go60
1 files changed, 60 insertions, 0 deletions
diff --git a/vendor/github.com/klauspost/compress/snappy/decode.go b/vendor/github.com/klauspost/compress/snappy/decode.go
new file mode 100644
index 000000000..89f1fa234
--- /dev/null
+++ b/vendor/github.com/klauspost/compress/snappy/decode.go
@@ -0,0 +1,60 @@
+// 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"
+)
+
+var (
+ // ErrCorrupt reports that the input is invalid.
+ ErrCorrupt = s2.ErrCorrupt
+ // ErrTooLarge reports that the uncompressed length is too large.
+ ErrTooLarge = s2.ErrTooLarge
+ // ErrUnsupported reports that the input isn't supported.
+ ErrUnsupported = s2.ErrUnsupported
+)
+
+const (
+ // maxBlockSize is the maximum size of the input to encodeBlock. It is not
+ // part of the wire format per se, but some parts of the encoder assume
+ // that an offset fits into a uint16.
+ //
+ // Also, for the framing format (Writer type instead of Encode function),
+ // https://github.com/google/snappy/blob/master/framing_format.txt says
+ // that "the uncompressed data in a chunk must be no longer than 65536
+ // bytes".
+ maxBlockSize = 65536
+)
+
+// DecodedLen returns the length of the decoded block.
+func DecodedLen(src []byte) (int, error) {
+ return s2.DecodedLen(src)
+}
+
+// Decode returns the decoded form of src. The returned slice may be a sub-
+// slice of dst if dst was large enough to hold the entire decoded block.
+// Otherwise, a newly allocated slice will be returned.
+//
+// The dst and src must not overlap. It is valid to pass a nil dst.
+//
+// Decode handles the Snappy block format, not the Snappy stream format.
+func Decode(dst, src []byte) ([]byte, error) {
+ return s2.Decode(dst, src)
+}
+
+// NewReader returns a new Reader that decompresses from r, using the framing
+// format described at
+// https://github.com/google/snappy/blob/master/framing_format.txt
+func NewReader(r io.Reader) *Reader {
+ return s2.NewReader(r, s2.ReaderMaxBlockSize(maxBlockSize))
+}
+
+// Reader is an io.Reader that can read Snappy-compressed bytes.
+//
+// Reader handles the Snappy stream format, not the Snappy block format.
+type Reader = s2.Reader