Initial QSfera import
This commit is contained in:
+28
@@ -0,0 +1,28 @@
|
||||
package protocol
|
||||
|
||||
import (
|
||||
"io"
|
||||
)
|
||||
|
||||
// RoundTrip sends a request to a kafka broker and returns the response.
|
||||
func RoundTrip(rw io.ReadWriter, apiVersion int16, correlationID int32, clientID string, req Message) (Message, error) {
|
||||
if err := WriteRequest(rw, apiVersion, correlationID, clientID, req); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if !hasResponse(req) {
|
||||
return nil, nil
|
||||
}
|
||||
id, res, err := ReadResponse(rw, req.ApiKey(), apiVersion)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if id != correlationID {
|
||||
return nil, Errorf("correlation id mismatch (expected=%d, found=%d)", correlationID, id)
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func hasResponse(msg Message) bool {
|
||||
x, _ := msg.(interface{ HasResponse() bool })
|
||||
return x == nil || x.HasResponse()
|
||||
}
|
||||
Reference in New Issue
Block a user