metadata_response.go 790 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package kafka
  2. type metadata struct {
  3. brokers []broker
  4. topics []topicMetadata
  5. }
  6. func (m *metadata) encode(pe packetEncoder) {
  7. pe.putInt32(int32(len(m.brokers)))
  8. for i := range m.brokers {
  9. (&m.brokers[i]).encode(pe)
  10. }
  11. pe.putInt32(int32(len(m.topics)))
  12. for i := range m.topics {
  13. (&m.topics[i]).encode(pe)
  14. }
  15. }
  16. func (m *metadata) decode(pd packetDecoder) (err error) {
  17. n, err := pd.getArrayCount()
  18. if err != nil {
  19. return err
  20. }
  21. m.brokers = make([]broker, n)
  22. for i := 0; i < n; i++ {
  23. err = (&m.brokers[i]).decode(pd)
  24. if err != nil {
  25. return err
  26. }
  27. }
  28. n, err = pd.getArrayCount()
  29. if err != nil {
  30. return err
  31. }
  32. m.topics = make([]topicMetadata, n)
  33. for i := 0; i < n; i++ {
  34. err = (&m.topics[i]).decode(pd)
  35. if err != nil {
  36. return err
  37. }
  38. }
  39. return nil
  40. }