1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
package gozstd
import (
"bytes"
"fmt"
"io"
"log"
)
func ExampleWriter() {
// Compress data to bb.
var bb bytes.Buffer
zw := NewWriter(&bb)
defer zw.Release()
for i := 0; i < 3; i++ {
fmt.Fprintf(zw, "line %d\n", i)
}
if err := zw.Close(); err != nil {
log.Fatalf("cannot close writer: %s", err)
}
// Decompress the data and verify it is valid.
plainData, err := Decompress(nil, bb.Bytes())
fmt.Printf("err: %v\n%s", err, plainData)
// Output:
// err: <nil>
// line 0
// line 1
// line 2
}
func ExampleWriter_Flush() {
var bb bytes.Buffer
zw := NewWriter(&bb)
defer zw.Release()
// Write some data to zw.
data := []byte("some data\nto compress")
if _, err := zw.Write(data); err != nil {
log.Fatalf("cannot write data to zw: %s", err)
}
// Verify the data is cached in zw and isn't propagated to bb.
if bb.Len() > 0 {
log.Fatalf("%d bytes unexpectedly propagated to bb", bb.Len())
}
// Flush the compressed data to bb.
if err := zw.Flush(); err != nil {
log.Fatalf("cannot flush compressed data: %s", err)
}
// Verify the compressed data is propagated to bb.
if bb.Len() == 0 {
log.Fatalf("the compressed data isn't propagated to bb")
}
// Try reading the compressed data with reader.
zr := NewReader(&bb)
defer zr.Release()
buf := make([]byte, len(data))
if _, err := io.ReadFull(zr, buf); err != nil {
log.Fatalf("cannot read the compressed data: %s", err)
}
fmt.Printf("%s", buf)
// Output:
// some data
// to compress
}
func ExampleWriter_Reset() {
zw := NewWriter(nil)
defer zw.Release()
// Write to different destinations using the same Writer.
for i := 0; i < 3; i++ {
var bb bytes.Buffer
zw.Reset(&bb, nil, DefaultCompressionLevel)
if _, err := zw.Write([]byte(fmt.Sprintf("line %d", i))); err != nil {
log.Fatalf("unexpected error when writing data: %s", err)
}
if err := zw.Close(); err != nil {
log.Fatalf("unexpected error when closing zw: %s", err)
}
// Decompress the compressed data.
plainData, err := Decompress(nil, bb.Bytes())
if err != nil {
log.Fatalf("unexpected error when decompressing data: %s", err)
}
fmt.Printf("%s\n", plainData)
}
// Output:
// line 0
// line 1
// line 2
}
func ExampleWriterParams() {
// Compress data to bb.
var bb bytes.Buffer
zw := NewWriterParams(&bb, &WriterParams{
CompressionLevel: 10,
WindowLog: 14,
})
defer zw.Release()
for i := 0; i < 3; i++ {
fmt.Fprintf(zw, "line %d\n", i)
}
if err := zw.Close(); err != nil {
log.Fatalf("cannot close writer: %s", err)
}
// Decompress the data and verify it is valid.
plainData, err := Decompress(nil, bb.Bytes())
fmt.Printf("err: %v\n%s", err, plainData)
// Output:
// err: <nil>
// line 0
// line 1
// line 2
}
|