Method: Kafka::Protocol::MetadataResponse.decode

Defined in:
lib/kafka/protocol/metadata_response.rb

.decode(decoder) ⇒ MetadataResponse

Decodes a MetadataResponse from a Decoder containing response data.

Parameters:

Returns:



143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
# File 'lib/kafka/protocol/metadata_response.rb', line 143

def self.decode(decoder)
  brokers = decoder.array do
    node_id = decoder.int32
    host = decoder.string
    port = decoder.int32
    _rack = decoder.string

    BrokerInfo.new(
      node_id: node_id,
      host: host,
      port: port
    )
  end

  controller_id = decoder.int32

  topics = decoder.array do
    topic_error_code = decoder.int16
    topic_name = decoder.string
    _is_internal = decoder.boolean

    partitions = decoder.array do
      PartitionMetadata.new(
        partition_error_code: decoder.int16,
        partition_id: decoder.int32,
        leader: decoder.int32,
        replicas: decoder.array { decoder.int32 },
        isr: decoder.array { decoder.int32 },
      )
    end

    TopicMetadata.new(
      topic_error_code: topic_error_code,
      topic_name: topic_name,
      partitions: partitions,
    )
  end

  new(brokers: brokers, controller_id: controller_id, topics: topics)
end