cubefs
69 строк · 1.4 Кб
1package sarama2
3const defaultClientSoftwareName = "sarama"4
5type ApiVersionsRequest struct {6// Version defines the protocol version to use for encode and decode7Version int168// ClientSoftwareName contains the name of the client.9ClientSoftwareName string10// ClientSoftwareVersion contains the version of the client.11ClientSoftwareVersion string12}
13
14func (r *ApiVersionsRequest) encode(pe packetEncoder) (err error) {15if r.Version >= 3 {16if err := pe.putCompactString(r.ClientSoftwareName); err != nil {17return err18}19if err := pe.putCompactString(r.ClientSoftwareVersion); err != nil {20return err21}22pe.putEmptyTaggedFieldArray()23}24
25return nil26}
27
28func (r *ApiVersionsRequest) decode(pd packetDecoder, version int16) (err error) {29r.Version = version30if r.Version >= 3 {31if r.ClientSoftwareName, err = pd.getCompactString(); err != nil {32return err33}34if r.ClientSoftwareVersion, err = pd.getCompactString(); err != nil {35return err36}37if _, err := pd.getEmptyTaggedFieldArray(); err != nil {38return err39}40}41
42return nil43}
44
45func (r *ApiVersionsRequest) key() int16 {46return 1847}
48
49func (r *ApiVersionsRequest) version() int16 {50return r.Version51}
52
53func (r *ApiVersionsRequest) headerVersion() int16 {54if r.Version >= 3 {55return 256}57return 158}
59
60func (r *ApiVersionsRequest) requiredVersion() KafkaVersion {61switch r.Version {62case 0:63return V0_10_0_064case 3:65return V2_4_0_066default:67return V0_10_0_068}69}
70