NewWriter implements the compress.Codec interface.
(w io.Writer)
| 96 | |
| 97 | // NewWriter implements the compress.Codec interface. |
| 98 | func (c *Codec) NewWriter(w io.Writer) io.WriteCloser { |
| 99 | p := new(writer) |
| 100 | if enc, _ := c.encoderPool.Get().(*zstd.Encoder); enc == nil { |
| 101 | z, err := zstd.NewWriter(w, |
| 102 | zstd.WithEncoderLevel(c.zstdLevel()), |
| 103 | zstd.WithEncoderConcurrency(1), |
| 104 | zstd.WithZeroFrames(true), |
| 105 | ) |
| 106 | if err != nil { |
| 107 | p.err = err |
| 108 | } else { |
| 109 | p.enc = z |
| 110 | } |
| 111 | } else { |
| 112 | p.enc = enc |
| 113 | p.enc.Reset(w) |
| 114 | } |
| 115 | p.c = c |
| 116 | return p |
| 117 | } |
| 118 | |
| 119 | type writer struct { |
| 120 | c *Codec |