28 lines
539 B
Go
28 lines
539 B
Go
|
// +build !go1.10
|
||
|
|
||
|
package pbufio
|
||
|
|
||
|
import "bufio"
|
||
|
|
||
|
func writerSize(bw *bufio.Writer) int {
|
||
|
return bw.Available() + bw.Buffered()
|
||
|
}
|
||
|
|
||
|
// readerSize returns buffer size of the given buffered reader.
|
||
|
// NOTE: current workaround implementation resets underlying io.Reader.
|
||
|
func readerSize(br *bufio.Reader) int {
|
||
|
br.Reset(sizeReader)
|
||
|
br.ReadByte()
|
||
|
n := br.Buffered() + 1
|
||
|
br.Reset(nil)
|
||
|
return n
|
||
|
}
|
||
|
|
||
|
var sizeReader optimisticReader
|
||
|
|
||
|
type optimisticReader struct{}
|
||
|
|
||
|
func (optimisticReader) Read(p []byte) (int, error) {
|
||
|
return len(p), nil
|
||
|
}
|