partitionMetadata.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package kafka
  2. type partitionMetadata struct {
  3. err kafkaError
  4. id int32
  5. leader int32
  6. replicas []int32
  7. isr []int32
  8. }
  9. func (pm *partitionMetadata) encode(pe packetEncoder) {
  10. pe.putError(pm.err)
  11. pe.putInt32(pm.id)
  12. pe.putInt32(pm.leader)
  13. pe.putArrayCount(len(pm.replicas))
  14. for _, val := range pm.replicas {
  15. pe.putInt32(val)
  16. }
  17. pe.putArrayCount(len(pm.isr))
  18. for _, val := range pm.isr {
  19. pe.putInt32(val)
  20. }
  21. }
  22. func (pm *partitionMetadata) decode(pd packetDecoder) (err error) {
  23. pm.err, err = pd.getError()
  24. if err != nil {
  25. return err
  26. }
  27. pm.id, err = pd.getInt32()
  28. if err != nil {
  29. return err
  30. }
  31. pm.leader, err = pd.getInt32()
  32. if err != nil {
  33. return err
  34. }
  35. n, err := pd.getArrayCount()
  36. if err != nil {
  37. return err
  38. }
  39. pm.replicas = make([]int32, n)
  40. for i := 0; i < n; i++ {
  41. pm.replicas[i], err = pd.getInt32()
  42. if err != nil {
  43. return err
  44. }
  45. }
  46. n, err = pd.getArrayCount()
  47. if err != nil {
  48. return err
  49. }
  50. pm.isr = make([]int32, n)
  51. for i := 0; i < n; i++ {
  52. pm.isr[i], err = pd.getInt32()
  53. if err != nil {
  54. return err
  55. }
  56. }
  57. return nil
  58. }