package electleaders import "github.com/segmentio/kafka-go/protocol" func init() { protocol.Register(&Request{}, &Response{}) } // Detailed API definition: https://kafka.apache.org/protocol#The_Messages_ElectLeaders type Request struct { ElectionType int8 `kafka:"min=v1,max=v1"` TopicPartitions []RequestTopicPartitions `kafka:"min=v0,max=v1"` TimeoutMs int32 `kafka:"min=v0,max=v1"` } type RequestTopicPartitions struct { Topic string `kafka:"min=v0,max=v1"` PartitionIDs []int32 `kafka:"min=v0,max=v1"` } func (r *Request) ApiKey() protocol.ApiKey { return protocol.ElectLeaders } func (r *Request) Broker(cluster protocol.Cluster) (protocol.Broker, error) { return cluster.Brokers[cluster.Controller], nil } type Response struct { ThrottleTime int32 `kafka:"min=v0,max=v1"` ErrorCode int16 `kafka:"min=v1,max=v1"` ReplicaElectionResults []ResponseReplicaElectionResult `kafka:"min=v0,max=v1"` } type ResponseReplicaElectionResult struct { Topic string `kafka:"min=v0,max=v1"` PartitionResults []ResponsePartitionResult `kafka:"min=v0,max=v1"` } type ResponsePartitionResult struct { PartitionID int32 `kafka:"min=v0,max=v1"` ErrorCode int16 `kafka:"min=v0,max=v1"` ErrorMessage string `kafka:"min=v0,max=v1,nullable"` } func (r *Response) ApiKey() protocol.ApiKey { return protocol.ElectLeaders }