blob: f3430b5bdab02a8bfd06da2e93e6ffe5f7215cff (
plain)
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
|
package kagus
import (
"io"
)
// PaddedWriter is a writer for data that needs to be padded / aligned.
type PaddedWriter struct {
cw *CountWriter
padding int
}
func NewPaddedWriter(w io.Writer, padding int) *PaddedWriter {
return &PaddedWriter{NewCountWriter(w), padding}
}
func (pw *PaddedWriter) Write(p []byte) (int, error) {
return pw.cw.Write(p)
}
// Pad needs to be called if the padding should be inserted. Data is padded with zero-bytes.
func (pw *PaddedWriter) Pad() error {
mod := int(pw.cw.N % int64(pw.padding))
if mod == 0 {
return nil
}
paddingLen := pw.padding - mod
padding := make([]byte, paddingLen)
_, err := pw.cw.Write(padding)
return err
}
|