12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- package sarama
- type MetadataRequest struct {
- Version int16
- Topics []string
- AllowAutoTopicCreation bool
- }
- func (r *MetadataRequest) encode(pe packetEncoder) error {
- if r.Version < 0 || r.Version > 5 {
- return PacketEncodingError{"invalid or unsupported MetadataRequest version field"}
- }
- if r.Version == 0 || r.Topics != nil || len(r.Topics) > 0 {
- err := pe.putArrayLength(len(r.Topics))
- if err != nil {
- return err
- }
- for i := range r.Topics {
- err = pe.putString(r.Topics[i])
- if err != nil {
- return err
- }
- }
- } else {
- pe.putInt32(-1)
- }
- if r.Version > 3 {
- pe.putBool(r.AllowAutoTopicCreation)
- }
- return nil
- }
- func (r *MetadataRequest) decode(pd packetDecoder, version int16) error {
- r.Version = version
- size, err := pd.getInt32()
- if err != nil {
- return err
- }
- if size < 0 {
- return nil
- } else {
- topicCount := size
- if topicCount == 0 {
- return nil
- }
- r.Topics = make([]string, topicCount)
- for i := range r.Topics {
- topic, err := pd.getString()
- if err != nil {
- return err
- }
- r.Topics[i] = topic
- }
- }
- if r.Version > 3 {
- autoCreation, err := pd.getBool()
- if err != nil {
- return err
- }
- r.AllowAutoTopicCreation = autoCreation
- }
- return nil
- }
- func (r *MetadataRequest) key() int16 {
- return 3
- }
- func (r *MetadataRequest) version() int16 {
- return r.Version
- }
- func (r *MetadataRequest) requiredVersion() KafkaVersion {
- switch r.Version {
- case 1:
- return V0_10_0_0
- case 2:
- return V0_10_1_0
- case 3, 4:
- return V0_11_0_0
- case 5:
- return V1_0_0_0
- default:
- return MinVersion
- }
- }
|