Initial QSfera import
This commit is contained in:
Generated
Vendored
+97
@@ -0,0 +1,97 @@
|
||||
package describegroups
|
||||
|
||||
import (
|
||||
"github.com/segmentio/kafka-go/protocol"
|
||||
)
|
||||
|
||||
func init() {
|
||||
protocol.Register(&Request{}, &Response{})
|
||||
}
|
||||
|
||||
// Detailed API definition: https://kafka.apache.org/protocol#The_Messages_DescribeGroups
|
||||
type Request struct {
|
||||
// We need at least one tagged field to indicate that this is a "flexible" message
|
||||
// type.
|
||||
_ struct{} `kafka:"min=v5,max=v5,tag"`
|
||||
Groups []string `kafka:"min=v0,max=v4|min=v5,max=v5,compact"`
|
||||
IncludeAuthorizedOperations bool `kafka:"min=v3,max=v5"`
|
||||
}
|
||||
|
||||
func (r *Request) ApiKey() protocol.ApiKey { return protocol.DescribeGroups }
|
||||
|
||||
func (r *Request) Group() string {
|
||||
return r.Groups[0]
|
||||
}
|
||||
|
||||
func (r *Request) Split(cluster protocol.Cluster) (
|
||||
[]protocol.Message,
|
||||
protocol.Merger,
|
||||
error,
|
||||
) {
|
||||
messages := []protocol.Message{}
|
||||
|
||||
// Split requests by group since they'll need to go to different coordinators.
|
||||
for _, group := range r.Groups {
|
||||
messages = append(
|
||||
messages,
|
||||
&Request{
|
||||
Groups: []string{group},
|
||||
IncludeAuthorizedOperations: r.IncludeAuthorizedOperations,
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
return messages, new(Response), nil
|
||||
}
|
||||
|
||||
type Response struct {
|
||||
// We need at least one tagged field to indicate that this is a "flexible" message
|
||||
// type.
|
||||
_ struct{} `kafka:"min=v5,max=v5,tag"`
|
||||
ThrottleTimeMs int32 `kafka:"min=v1,max=v5"`
|
||||
Groups []ResponseGroup `kafka:"min=v0,max=v5"`
|
||||
}
|
||||
|
||||
type ResponseGroup struct {
|
||||
// We need at least one tagged field to indicate that this is a "flexible" message
|
||||
// type.
|
||||
_ struct{} `kafka:"min=v5,max=v5,tag"`
|
||||
ErrorCode int16 `kafka:"min=v0,max=v5"`
|
||||
GroupID string `kafka:"min=v0,max=v4|min=v5,max=v5,compact"`
|
||||
GroupState string `kafka:"min=v0,max=v4|min=v5,max=v5,compact"`
|
||||
ProtocolType string `kafka:"min=v0,max=v4|min=v5,max=v5,compact"`
|
||||
ProtocolData string `kafka:"min=v0,max=v4|min=v5,max=v5,compact"`
|
||||
Members []ResponseGroupMember `kafka:"min=v0,max=v4|min=v5,max=v5,compact"`
|
||||
AuthorizedOperations int32 `kafka:"min=v3,max=v5"`
|
||||
}
|
||||
|
||||
type ResponseGroupMember struct {
|
||||
// We need at least one tagged field to indicate that this is a "flexible" message
|
||||
// type.
|
||||
_ struct{} `kafka:"min=v5,max=v5,tag"`
|
||||
MemberID string `kafka:"min=v0,max=v4|min=v5,max=v5,compact"`
|
||||
GroupInstanceID string `kafka:"min=v4,max=v4,nullable|min=v5,max=v5,compact,nullable"`
|
||||
ClientID string `kafka:"min=v0,max=v4|min=v5,max=v5,compact"`
|
||||
ClientHost string `kafka:"min=v0,max=v4|min=v5,max=v5,compact"`
|
||||
MemberMetadata []byte `kafka:"min=v0,max=v4|min=v5,max=v5,compact"`
|
||||
MemberAssignment []byte `kafka:"min=v0,max=v4|min=v5,max=v5,compact"`
|
||||
}
|
||||
|
||||
func (r *Response) ApiKey() protocol.ApiKey { return protocol.DescribeGroups }
|
||||
|
||||
func (r *Response) Merge(requests []protocol.Message, results []interface{}) (
|
||||
protocol.Message,
|
||||
error,
|
||||
) {
|
||||
response := &Response{}
|
||||
|
||||
for _, result := range results {
|
||||
m, err := protocol.Result(result)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
response.Groups = append(response.Groups, m.(*Response).Groups...)
|
||||
}
|
||||
|
||||
return response, nil
|
||||
}
|
||||
Reference in New Issue
Block a user