Skip to content

Commit 791916c

Browse files
committed
refactor: consolidate encoding logic across request types
- Refactored Encode methods in ApiVersionsRequest, DescribeTopicPartitionsRequest, and FetchRequest to utilize a shared encodeRequest function, enhancing code reuse and readability. - Introduced a new request.go file to centralize the encoding logic, streamlining the encoding process for various request types.
1 parent 384acd4 commit 791916c

File tree

4 files changed

+19
-25
lines changed

4 files changed

+19
-25
lines changed

protocol/api/api_versions_request.go

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,7 @@ type ApiVersionsRequest struct {
3030
}
3131

3232
func (r ApiVersionsRequest) Encode() []byte {
33-
encoder := encoder.Encoder{}
34-
encoder.Init(make([]byte, 4096))
35-
36-
r.Header.Encode(&encoder)
37-
r.Body.Encode(&encoder)
38-
messageBytes := encoder.PackMessage()
39-
40-
return messageBytes
33+
return encodeRequest(r)
4134
}
4235

4336
func (r ApiVersionsRequest) GetHeader() builder.RequestHeaderI {

protocol/api/describe_topic_partitions_request.go

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,7 @@ type DescribeTopicPartitionsRequest struct {
5959
}
6060

6161
func (r DescribeTopicPartitionsRequest) Encode() []byte {
62-
encoder := encoder.Encoder{}
63-
encoder.Init(make([]byte, 4096))
64-
65-
r.Header.Encode(&encoder)
66-
r.Body.Encode(&encoder)
67-
messageBytes := encoder.PackMessage()
68-
69-
return messageBytes
70-
62+
return encodeRequest(r)
7163
}
7264

7365
func (r DescribeTopicPartitionsRequest) GetHeader() builder.RequestHeaderI {

protocol/api/fetch_request.go

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -109,14 +109,7 @@ type FetchRequest struct {
109109
}
110110

111111
func (r FetchRequest) Encode() []byte {
112-
encoder := encoder.Encoder{}
113-
encoder.Init(make([]byte, 4096))
114-
115-
r.Header.Encode(&encoder)
116-
r.Body.Encode(&encoder)
117-
message := encoder.PackMessage()
118-
119-
return message
112+
return encodeRequest(r)
120113
}
121114

122115
func (r FetchRequest) GetHeader() builder.RequestHeaderI {

protocol/api/request.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package kafkaapi
2+
3+
import (
4+
"github.com/codecrafters-io/kafka-tester/protocol/builder"
5+
"github.com/codecrafters-io/kafka-tester/protocol/encoder"
6+
)
7+
8+
func encodeRequest(req builder.RequestI) []byte {
9+
encoder := encoder.Encoder{}
10+
encoder.Init(make([]byte, 4096))
11+
12+
req.GetHeader().Encode(&encoder)
13+
req.GetBody().Encode(&encoder)
14+
15+
return encoder.PackMessage()
16+
}

0 commit comments

Comments
 (0)