FILE / ScuroNeko/mtg

wrappers/buffered_reader.go

Исходный файл и его история в репозитории.
FILE 4262e5f5de711a91276491770361154a06cafff0
Files
mtg/wrappers/buffered_reader.go
T
2018-07-07 16:50:29 +03:00

33 lines
617 B
Go

package wrappers
import "bytes"
type BufferedReader struct {
Buffer *bytes.Buffer
}
func (b *BufferedReader) BufferedRead(p []byte, callback func() error) (int, error) {
if b.Buffer.Len() > 0 {
return b.flush(p)
}
if err := callback(); err != nil {
return 0, err
}
return b.flush(p)
}
func (b *BufferedReader) flush(p []byte) (int, error) {
if b.Buffer.Len() <= len(p) {
sizeToReturn := b.Buffer.Len()
copy(p, b.Buffer.Bytes())
b.Buffer.Reset()
return sizeToReturn, nil
}
return b.Buffer.Read(p)
}
func NewBufferedReader() BufferedReader {
return BufferedReader{Buffer: &bytes.Buffer{}}
}