discard.go 1020 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package kafka
  2. import "bufio"
  3. func discardN(r *bufio.Reader, sz int, n int) (int, error) {
  4. var err error
  5. if n <= sz {
  6. n, err = r.Discard(n)
  7. } else {
  8. n, err = r.Discard(sz)
  9. if err == nil {
  10. err = errShortRead
  11. }
  12. }
  13. return sz - n, err
  14. }
  15. func discardInt8(r *bufio.Reader, sz int) (int, error) {
  16. return discardN(r, sz, 1)
  17. }
  18. func discardInt16(r *bufio.Reader, sz int) (int, error) {
  19. return discardN(r, sz, 2)
  20. }
  21. func discardInt32(r *bufio.Reader, sz int) (int, error) {
  22. return discardN(r, sz, 4)
  23. }
  24. func discardInt64(r *bufio.Reader, sz int) (int, error) {
  25. return discardN(r, sz, 8)
  26. }
  27. func discardString(r *bufio.Reader, sz int) (int, error) {
  28. return readStringWith(r, sz, func(r *bufio.Reader, sz int, n int) (int, error) {
  29. if n < 0 {
  30. return sz, nil
  31. }
  32. return discardN(r, sz, n)
  33. })
  34. }
  35. func discardBytes(r *bufio.Reader, sz int) (int, error) {
  36. return readBytesWith(r, sz, func(r *bufio.Reader, sz int, n int) (int, error) {
  37. if n < 0 {
  38. return sz, nil
  39. }
  40. return discardN(r, sz, n)
  41. })
  42. }