blob: 1f0bf8c02539e1e3d2693c8fc47f8d898fdc300f [file] [log] [blame]
Abhay Kumara2ae5992025-11-10 14:02:24 +00001package sarama
2
3type EndTxnRequest struct {
4 Version int16
5 TransactionalID string
6 ProducerID int64
7 ProducerEpoch int16
8 TransactionResult bool
9}
10
11func (a *EndTxnRequest) setVersion(v int16) {
12 a.Version = v
13}
14
15func (a *EndTxnRequest) encode(pe packetEncoder) error {
16 if err := pe.putString(a.TransactionalID); err != nil {
17 return err
18 }
19
20 pe.putInt64(a.ProducerID)
21
22 pe.putInt16(a.ProducerEpoch)
23
24 pe.putBool(a.TransactionResult)
25
26 return nil
27}
28
29func (a *EndTxnRequest) decode(pd packetDecoder, version int16) (err error) {
30 if a.TransactionalID, err = pd.getString(); err != nil {
31 return err
32 }
33 if a.ProducerID, err = pd.getInt64(); err != nil {
34 return err
35 }
36 if a.ProducerEpoch, err = pd.getInt16(); err != nil {
37 return err
38 }
39 if a.TransactionResult, err = pd.getBool(); err != nil {
40 return err
41 }
42 return nil
43}
44
45func (a *EndTxnRequest) key() int16 {
46 return apiKeyEndTxn
47}
48
49func (a *EndTxnRequest) version() int16 {
50 return a.Version
51}
52
53func (r *EndTxnRequest) headerVersion() int16 {
54 return 1
55}
56
57func (a *EndTxnRequest) isValidVersion() bool {
58 return a.Version >= 0 && a.Version <= 2
59}
60
61func (a *EndTxnRequest) requiredVersion() KafkaVersion {
62 switch a.Version {
63 case 2:
64 return V2_7_0_0
65 case 1:
66 return V2_0_0_0
67 default:
68 return V0_11_0_0
69 }
70}