Browse Source

encode produce requests

Evan Huus 11 years ago
parent
commit
7802d4de85
1 changed files with 24 additions and 0 deletions
  1. 24 0
      produce_request.go

+ 24 - 0
produce_request.go

@@ -5,13 +5,37 @@ type produceRequestPartitionBlock struct {
 	msgSet    *messageSet
 	msgSet    *messageSet
 }
 }
 
 
+func (p *produceRequestPartitionBlock) encode(pe packetEncoder) {
+	pe.putInt32(p.partition)
+	pe.pushLength32()
+	p.msgSet.encode(pe)
+	pe.pop()
+}
+
 type produceRequestTopicBlock struct {
 type produceRequestTopicBlock struct {
 	topic      *string
 	topic      *string
 	partitions []produceRequestPartitionBlock
 	partitions []produceRequestPartitionBlock
 }
 }
 
 
+func (p *produceRequestTopicBlock) encode(pe packetEncoder) {
+	pe.putString(p.topic)
+	pe.putArrayCount(len(p.partitions))
+	for i := range p.partitions {
+		(&p.partitions[i]).encode(pe)
+	}
+}
+
 type produceRequest struct {
 type produceRequest struct {
 	requiredAcks int16
 	requiredAcks int16
 	timeout      int32
 	timeout      int32
 	topics       []produceRequestTopicBlock
 	topics       []produceRequestTopicBlock
 }
 }
+
+func (p *produceRequest) encode(pe packetEncoder) {
+	pe.putInt16(p.requiredAcks)
+	pe.putInt32(p.timeout)
+	pe.putArrayCount(len(p.topics))
+	for i := range p.topics {
+		(&p.topics[i]).encode(pe)
+	}
+}