check writer level when use NewWriterLevel

Signed-off-by: luke <chenjinguang@huawei.com>
This commit is contained in:
luke 2022-03-10 01:34:15 +00:00
parent 1d750214c2
commit 5b0203fbd3
2 changed files with 11 additions and 6 deletions

View File

@ -484,7 +484,7 @@ func BenchmarkEncodeLevels(b *testing.B) {
b.ReportAllocs()
b.SetBytes(int64(len(opticks)))
for i := 0; i < b.N; i++ {
w := NewWriterLevel(ioutil.Discard, level)
w, _ := NewWriterLevel(ioutil.Discard, level)
w.Write(opticks)
w.Close()
}
@ -500,7 +500,7 @@ func BenchmarkEncodeLevelsReset(b *testing.B) {
for level := BestSpeed; level <= BestCompression; level++ {
buf := new(bytes.Buffer)
w := NewWriterLevel(buf, level)
w, _ := NewWriterLevel(buf, level)
w.Write(opticks)
w.Close()
b.Run(fmt.Sprintf("%d", level), func(b *testing.B) {
@ -524,7 +524,7 @@ func BenchmarkDecodeLevels(b *testing.B) {
for level := BestSpeed; level <= BestCompression; level++ {
buf := new(bytes.Buffer)
w := NewWriterLevel(buf, level)
w, _ := NewWriterLevel(buf, level)
w.Write(opticks)
w.Close()
compressed := buf.Bytes()

View File

@ -2,6 +2,7 @@ package brotli
import (
"errors"
"fmt"
"io"
)
@ -30,17 +31,21 @@ var (
// It is the caller's responsibility to call Close on the Writer when done.
// Writes may be buffered and not flushed until Close.
func NewWriter(dst io.Writer) *Writer {
return NewWriterLevel(dst, DefaultCompression)
b, _ := NewWriterLevel(dst, DefaultCompression)
return b
}
// NewWriterLevel is like NewWriter but specifies the compression level instead
// of assuming DefaultCompression.
// The compression level can be DefaultCompression or any integer value between
// BestSpeed and BestCompression inclusive.
func NewWriterLevel(dst io.Writer, level int) *Writer {
func NewWriterLevel(dst io.Writer, level int) (*Writer, error) {
if level < BestSpeed || level > BestCompression {
return nil, fmt.Errorf("brotli: invalid compression level: %d", level)
}
return NewWriterOptions(dst, WriterOptions{
Quality: level,
})
}), nil
}
// NewWriterOptions is like NewWriter but specifies WriterOptions