topicMetadata.go 779 B

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