Browse Source

Simplify uncompressed records length computation

Vlad Hanciuta 8 years ago
parent
commit
5ffc7bf531
2 changed files with 4 additions and 19 deletions
  1. 0 6
      record.go
  2. 4 13
      record_batch.go

+ 0 - 6
record.go

@@ -106,9 +106,3 @@ func (r *Record) decode(pd packetDecoder) (err error) {
 
 	return pd.pop()
 }
-
-func (r *Record) getTotalLength() (int, error) {
-	var prep prepEncoder
-	err := r.encode(&prep)
-	return prep.length, err
-}

+ 4 - 13
record_batch.go

@@ -50,7 +50,7 @@ type RecordBatch struct {
 	PartialTrailingRecord bool
 
 	compressedRecords []byte
-	recordsLen        int
+	recordsLen        int // uncompressed records size
 }
 
 func (b *RecordBatch) encode(pe packetEncoder) error {
@@ -90,12 +90,15 @@ func (b *RecordBatch) encode(pe packetEncoder) error {
 		if raw, err = encode(recordsArray(b.Records), nil); err != nil {
 			return err
 		}
+		b.recordsLen = len(raw)
 	}
 	switch b.Codec {
 	case CompressionNone:
+		offset := pe.offset()
 		if err := recordsArray(b.Records).encode(pe); err != nil {
 			return err
 		}
+		b.recordsLen = pe.offset() - offset
 	case CompressionGZIP:
 		var buf bytes.Buffer
 		writer := gzip.NewWriter(&buf)
@@ -242,18 +245,6 @@ func (b *RecordBatch) computeAttributes() int16 {
 	return attr
 }
 
-func (b *RecordBatch) computeRecordsLength() error {
-	b.recordsLen = 0
-	for _, r := range b.Records {
-		l, err := r.getTotalLength()
-		if err != nil {
-			return err
-		}
-		b.recordsLen += l
-	}
-	return nil
-}
-
 func (b *RecordBatch) addRecord(r *Record) {
 	b.Records = append(b.Records, r)
 }