pbufio_go19.go 539 B

123456789101112131415161718192021222324252627
  1. // +build !go1.10
  2. package pbufio
  3. import "bufio"
  4. func writerSize(bw *bufio.Writer) int {
  5. return bw.Available() + bw.Buffered()
  6. }
  7. // readerSize returns buffer size of the given buffered reader.
  8. // NOTE: current workaround implementation resets underlying io.Reader.
  9. func readerSize(br *bufio.Reader) int {
  10. br.Reset(sizeReader)
  11. br.ReadByte()
  12. n := br.Buffered() + 1
  13. br.Reset(nil)
  14. return n
  15. }
  16. var sizeReader optimisticReader
  17. type optimisticReader struct{}
  18. func (optimisticReader) Read(p []byte) (int, error) {
  19. return len(p), nil
  20. }