瀏覽代碼

Infer API type from encoder type, rather than passing it separately

Evan Huus 12 年之前
父節點
當前提交
ddf95c5718
共有 2 個文件被更改,包括 10 次插入2 次删除
  1. 9 1
      broker.go
  2. 1 1
      brokerManager.go

+ 9 - 1
broker.go

@@ -143,9 +143,17 @@ func (b *broker) rcvResponseLoop() {
 	}
 }
 
-func (b *broker) sendRequest(clientID *string, api API, body encoder) (chan []byte, error) {
+func (b *broker) sendRequest(clientID *string, body encoder) (chan []byte, error) {
 	var prepEnc prepEncoder
 	var realEnc realEncoder
+	var api API
+
+	switch body.(type) {
+	case *metadataRequest:
+		api = REQUEST_METADATA
+	default:
+		return nil, EncodingError{}
+	}
 
 	req := request{api, b.correlation_id, clientID, body}
 

+ 1 - 1
brokerManager.go

@@ -62,7 +62,7 @@ func (bm *brokerManager) refreshTopics(topics []*string) error {
 		return OutOfBrokers{}
 	}
 
-	responseChan, err := b.sendRequest(bm.client.id, REQUEST_METADATA, &metadataRequest{topics})
+	responseChan, err := b.sendRequest(bm.client.id, &metadataRequest{topics})
 	if err != nil {
 		return err
 	}