moved the kafka-go project to this repository

This commit is contained in:
Timmelmann
2026-08-08 14:26:06 +02:00
commit 58710c23b2
11 changed files with 225 additions and 0 deletions
+35
View File
@@ -0,0 +1,35 @@
package protocol
import "encoding/binary"
type Request struct {
bytes []byte
byteParseOffset uint
Length int32
Header *RequestHeader
}
func NewRequest(bytes []byte) *Request {
req := Request{
bytes: bytes,
byteParseOffset: 0,
}
req.Length = req.ReadInt32()
req.Header = ParseRequestHeader(&req)
return &req
}
func (r *Request) ReadInt16() int16{
val := binary.BigEndian.Uint16(r.bytes[r.byteParseOffset:])
r.byteParseOffset += 2
return int16(val)
}
func (r *Request) ReadInt32() int32 {
val := binary.BigEndian.Uint32(r.bytes[r.byteParseOffset:])
r.byteParseOffset += 4
return int32(val)
}
+19
View File
@@ -0,0 +1,19 @@
package protocol
type RequestHeader struct {
APIKey int16
APIVersion int16
Correlation_id int32
}
func ParseRequestHeader(r *Request) *RequestHeader {
apiKey := r.ReadInt16()
apiVersion := r.ReadInt16()
correlation_id := r.ReadInt32()
return &RequestHeader{
APIKey: apiKey,
APIVersion: apiVersion,
Correlation_id: correlation_id,
}
}
+7
View File
@@ -0,0 +1,7 @@
package response
type Message struct {
body []byte
header V0Header
messageSize int32
}
+19
View File
@@ -0,0 +1,19 @@
package response
import "encoding/binary"
type V0Header struct {
Correlation_id uint32
}
func NewHeader(correlation_id uint32) *V0Header {
return &V0Header{
Correlation_id: correlation_id,
}
}
func (h *V0Header) ToBytes() []byte {
buf := make([]byte, 4)
binary.BigEndian.PutUint32(buf, uint32(h.Correlation_id))
return buf
}
+28
View File
@@ -0,0 +1,28 @@
package response
import (
"encoding/binary"
)
type V0Response struct {
header V0Header
body []byte
}
func NewV0Reponse(correlation_id uint32) *V0Response {
return &V0Response{
header: V0Header{
Correlation_id: correlation_id},
body: []byte{},
}
}
func (r *V0Response) ToBytes() []byte {
header := r.header.ToBytes()
length := len(header)
buf := make([]byte, length+4)
binary.BigEndian.PutUint32(buf[0:4], uint32(length))
copy(buf[4:], header)
return buf
}