blob: e5b3baf646be90a71122fa7c41f1b8da0bcfa5e6 [file] [log] [blame]
kesavand2cde6582020-06-22 04:56:23 -04001package sarama
2
kesavandc71914f2022-03-25 11:19:03 +05303const defaultClientSoftwareName = "sarama"
4
kesavand2cde6582020-06-22 04:56:23 -04005type ApiVersionsRequest struct {
kesavandc71914f2022-03-25 11:19:03 +05306 // Version defines the protocol version to use for encode and decode
7 Version int16
8 // ClientSoftwareName contains the name of the client.
9 ClientSoftwareName string
10 // ClientSoftwareVersion contains the version of the client.
11 ClientSoftwareVersion string
kesavand2cde6582020-06-22 04:56:23 -040012}
13
kesavandc71914f2022-03-25 11:19:03 +053014func (r *ApiVersionsRequest) encode(pe packetEncoder) (err error) {
15 if r.Version >= 3 {
16 if err := pe.putCompactString(r.ClientSoftwareName); err != nil {
17 return err
18 }
19 if err := pe.putCompactString(r.ClientSoftwareVersion); err != nil {
20 return err
21 }
22 pe.putEmptyTaggedFieldArray()
23 }
24
kesavand2cde6582020-06-22 04:56:23 -040025 return nil
26}
27
kesavandc71914f2022-03-25 11:19:03 +053028func (r *ApiVersionsRequest) decode(pd packetDecoder, version int16) (err error) {
29 r.Version = version
30 if r.Version >= 3 {
31 if r.ClientSoftwareName, err = pd.getCompactString(); err != nil {
32 return err
33 }
34 if r.ClientSoftwareVersion, err = pd.getCompactString(); err != nil {
35 return err
36 }
37 if _, err := pd.getEmptyTaggedFieldArray(); err != nil {
38 return err
39 }
40 }
41
kesavand2cde6582020-06-22 04:56:23 -040042 return nil
43}
44
kesavandc71914f2022-03-25 11:19:03 +053045func (r *ApiVersionsRequest) key() int16 {
kesavand2cde6582020-06-22 04:56:23 -040046 return 18
47}
48
kesavandc71914f2022-03-25 11:19:03 +053049func (r *ApiVersionsRequest) version() int16 {
50 return r.Version
kesavand2cde6582020-06-22 04:56:23 -040051}
52
kesavandc71914f2022-03-25 11:19:03 +053053func (r *ApiVersionsRequest) headerVersion() int16 {
54 if r.Version >= 3 {
55 return 2
56 }
57 return 1
58}
59
60func (r *ApiVersionsRequest) requiredVersion() KafkaVersion {
61 switch r.Version {
62 case 0:
63 return V0_10_0_0
64 case 3:
65 return V2_4_0_0
66 default:
67 return V0_10_0_0
68 }
kesavand2cde6582020-06-22 04:56:23 -040069}