浏览代码

Make error codes public so callers can see specifically what went wrong

Evan Huus 12 年之前
父节点
当前提交
f29a5551d6
共有 9 个文件被更改,包括 24 次插入24 次删除
  1. 1 1
      broker.go
  2. 7 7
      errors.go
  3. 1 1
      packetDecoder.go
  4. 1 1
      packetEncoder.go
  5. 1 1
      partitionMetadata.go
  6. 1 1
      prepEncoder.go
  7. 10 10
      realDecoder.go
  8. 1 1
      realEncoder.go
  9. 1 1
      topicMetadata.go

+ 1 - 1
broker.go

@@ -155,7 +155,7 @@ func (b *broker) sendRequest(clientID *string, api API, body encoder) (chan []by
 
 	req.encode(&prepEnc)
 	if prepEnc.err {
-		return nil, encodingError{}
+		return nil, EncodingError{}
 	}
 
 	realEnc.raw = make([]byte, prepEnc.length+4)

+ 7 - 7
kError.go → errors.go

@@ -1,9 +1,9 @@
 package kafka
 
-type kError int16
+type KError int16
 
 const (
-	NO_ERROR                    kError = 0
+	NO_ERROR                    KError = 0
 	UNKNOWN                            = -1
 	OFFSET_OUT_OF_RANGE                = 1
 	INVALID_MESSAGE                    = 2
@@ -19,7 +19,7 @@ const (
 	OFFSET_METADATA_TOO_LARGE          = 12
 )
 
-func (err kError) Error() string {
+func (err KError) Error() string {
 	// Error messages stolen/adapted from
 	// https://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol
 	switch err {
@@ -63,16 +63,16 @@ func (err outOfBrokers) Error() string {
 	return "kafka: Client has run out of available brokers to talk to. Is your cluster reachable?"
 }
 
-type encodingError struct {
+type EncodingError struct {
 }
 
-func (err encodingError) Error() string {
+func (err EncodingError) Error() string {
 	return "kafka: Could not encode packet."
 }
 
-type decodingError struct {
+type DecodingError struct {
 }
 
-func (err decodingError) Error() string {
+func (err DecodingError) Error() string {
 	return "kafka: Could not decode packet. Is the server really speaking kafka?"
 }

+ 1 - 1
packetDecoder.go

@@ -3,7 +3,7 @@ package kafka
 type packetDecoder interface {
 	getInt16() (int16, error)
 	getInt32() (int32, error)
-	getError() (kError, error)
+	getError() (KError, error)
 	getString() (*string, error)
 	getBytes() (*[]byte, error)
 	getArrayCount() (int, error)

+ 1 - 1
packetEncoder.go

@@ -3,7 +3,7 @@ package kafka
 type packetEncoder interface {
 	putInt16(in int16)
 	putInt32(in int32)
-	putError(in kError)
+	putError(in KError)
 	putString(in *string)
 	putBytes(in *[]byte)
 	putArrayCount(in int)

+ 1 - 1
partitionMetadata.go

@@ -1,7 +1,7 @@
 package kafka
 
 type partitionMetadata struct {
-	err      kError
+	err      KError
 	id       int32
 	leader   int32
 	replicas []int32

+ 1 - 1
prepEncoder.go

@@ -15,7 +15,7 @@ func (pe *prepEncoder) putInt32(in int32) {
 	pe.length += 4
 }
 
-func (pe *prepEncoder) putError(in kError) {
+func (pe *prepEncoder) putError(in KError) {
 	pe.length += 2
 }
 

+ 10 - 10
realDecoder.go

@@ -16,7 +16,7 @@ func (rd *realDecoder) avail() int {
 
 func (rd *realDecoder) getInt16() (int16, error) {
 	if rd.avail() < 2 {
-		return -1, decodingError{}
+		return -1, DecodingError{}
 	}
 	tmp := int16(binary.BigEndian.Uint16(rd.raw[rd.off:]))
 	rd.off += 2
@@ -25,16 +25,16 @@ func (rd *realDecoder) getInt16() (int16, error) {
 
 func (rd *realDecoder) getInt32() (int32, error) {
 	if rd.avail() < 4 {
-		return -1, decodingError{}
+		return -1, DecodingError{}
 	}
 	tmp := int32(binary.BigEndian.Uint32(rd.raw[rd.off:]))
 	rd.off += 4
 	return tmp, nil
 }
 
-func (rd *realDecoder) getError() (kError, error) {
+func (rd *realDecoder) getError() (KError, error) {
 	val, err := rd.getInt16()
-	return kError(val), err
+	return KError(val), err
 }
 
 func (rd *realDecoder) getString() (*string, error) {
@@ -48,13 +48,13 @@ func (rd *realDecoder) getString() (*string, error) {
 
 	switch {
 	case n < -1:
-		return nil, decodingError{}
+		return nil, DecodingError{}
 	case n == -1:
 		return nil, nil
 	case n == 0:
 		return new(string), nil
 	case n > rd.avail():
-		return nil, decodingError{}
+		return nil, DecodingError{}
 	default:
 		tmp := new(string)
 		*tmp = string(rd.raw[rd.off : rd.off+n])
@@ -73,14 +73,14 @@ func (rd *realDecoder) getBytes() (*[]byte, error) {
 
 	switch {
 	case n < -1:
-		return nil, decodingError{}
+		return nil, DecodingError{}
 	case n == -1:
 		return nil, nil
 	case n == 0:
 		tmp := make([]byte, 0)
 		return &tmp, nil
 	case n > rd.avail():
-		return nil, decodingError{}
+		return nil, DecodingError{}
 	default:
 		tmp := rd.raw[rd.off : rd.off+n]
 		return &tmp, nil
@@ -89,12 +89,12 @@ func (rd *realDecoder) getBytes() (*[]byte, error) {
 
 func (rd *realDecoder) getArrayCount() (int, error) {
 	if rd.avail() < 4 {
-		return -1, decodingError{}
+		return -1, DecodingError{}
 	}
 	tmp := int(binary.BigEndian.Uint32(rd.raw[rd.off:]))
 	rd.off += 4
 	if tmp > rd.avail() || tmp > 2*math.MaxUint16 {
-		return -1, decodingError{}
+		return -1, DecodingError{}
 	}
 	return tmp, nil
 }

+ 1 - 1
realEncoder.go

@@ -17,7 +17,7 @@ func (re *realEncoder) putInt32(in int32) {
 	re.off += 4
 }
 
-func (re *realEncoder) putError(in kError) {
+func (re *realEncoder) putError(in KError) {
 	re.putInt16(int16(in))
 }
 

+ 1 - 1
topicMetadata.go

@@ -1,7 +1,7 @@
 package kafka
 
 type topicMetadata struct {
-	err        kError
+	err        KError
 	name       *string
 	partitions []partitionMetadata
 }