prep_encoder.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package kafka
  2. import "math"
  3. type prepEncoder struct {
  4. length int
  5. err bool
  6. }
  7. func (pe *prepEncoder) putInt8(in int8) {
  8. pe.length += 1
  9. }
  10. func (pe *prepEncoder) putInt16(in int16) {
  11. pe.length += 2
  12. }
  13. func (pe *prepEncoder) putInt32(in int32) {
  14. pe.length += 4
  15. }
  16. func (pe *prepEncoder) putInt64(in int64) {
  17. pe.length += 8
  18. }
  19. func (pe *prepEncoder) putError(in KError) {
  20. pe.length += 2
  21. }
  22. func (pe *prepEncoder) putString(in *string) {
  23. pe.length += 2
  24. if in == nil {
  25. return
  26. }
  27. if len(*in) > math.MaxInt16 {
  28. pe.err = true
  29. } else {
  30. pe.length += len(*in)
  31. }
  32. }
  33. func (pe *prepEncoder) putBytes(in *[]byte) {
  34. pe.length += 4
  35. if in == nil {
  36. return
  37. }
  38. if len(*in) > math.MaxInt32 {
  39. pe.err = true
  40. } else {
  41. pe.length += len(*in)
  42. }
  43. }
  44. func (pe *prepEncoder) putArrayCount(in int) {
  45. pe.length += 4
  46. }
  47. func (pe *prepEncoder) push(in pushEncoder) {
  48. pe.length += in.reserveLength()
  49. }
  50. func (pe *prepEncoder) pushLength32() {
  51. pe.length += 4
  52. }
  53. func (pe *prepEncoder) pushCRC32() {
  54. pe.length += 4
  55. }
  56. func (pe *prepEncoder) pop() {
  57. }