Pārlūkot izejas kodu

Clarify encoding errors, permit sending produceRequests

Evan Huus 12 gadi atpakaļ
vecāks
revīzija
4fd1ecc22c
2 mainītis faili ar 8 papildinājumiem un 6 dzēšanām
  1. 5 3
      broker.go
  2. 3 3
      prep_encoder.go

+ 5 - 3
broker.go

@@ -161,15 +161,17 @@ func (b *broker) sendRequest(clientID *string, body encoder) (*responsePromise,
 	switch body.(type) {
 	case *metadataRequest:
 		api = REQUEST_METADATA
+	case *produceRequest:
+		api = REQUEST_PRODUCE
 	default:
-		return nil, EncodingError{}
+		return nil, EncodingError{"Unknown API."}
 	}
 
 	req := request{api, b.correlation_id, clientID, body}
 
 	req.encode(&prepEnc)
-	if prepEnc.err {
-		return nil, EncodingError{}
+	if prepEnc.err != nil {
+		return nil, prepEnc.err
 	}
 
 	realEnc.raw = make([]byte, prepEnc.length+4)

+ 3 - 3
prep_encoder.go

@@ -4,7 +4,7 @@ import "math"
 
 type prepEncoder struct {
 	length int
-	err    bool
+	err    error
 }
 
 func (pe *prepEncoder) putInt8(in int8) {
@@ -33,7 +33,7 @@ func (pe *prepEncoder) putString(in *string) {
 		return
 	}
 	if len(*in) > math.MaxInt16 {
-		pe.err = true
+		pe.err = EncodingError{"String too long"}
 	} else {
 		pe.length += len(*in)
 	}
@@ -45,7 +45,7 @@ func (pe *prepEncoder) putBytes(in *[]byte) {
 		return
 	}
 	if len(*in) > math.MaxInt32 {
-		pe.err = true
+		pe.err = EncodingError{"Bytes too long"}
 	} else {
 		pe.length += len(*in)
 	}