wechatDataBackup/pkg/lame/writer.go
2024-08-26 22:56:29 +08:00

42 lines
692 B
Go

package lame
import (
"io"
)
type LameWriter struct {
output io.Writer
Encoder *Encoder
EncodedChunkSize int
}
func NewWriter(out io.Writer) *LameWriter {
writer := &LameWriter{out, Init(), 0}
return writer
}
func (lw *LameWriter) Write(p []byte) (int, error) {
// fmt.Println("lame Write len:", len(p))
out := lw.Encoder.Encode(p)
lw.EncodedChunkSize = len(out)
if lw.EncodedChunkSize > 0 {
_, err := lw.output.Write(out)
if err != nil {
return 0, err
}
}
return len(p), nil
}
func (lw *LameWriter) Close() error {
out := lw.Encoder.Flush()
if len(out) == 0 {
return nil
}
lw.Encoder.Close()
_, err := lw.output.Write(out)
return err
}