Stream-decode msgpack responses instead of waiting for read timeout
This commit is contained in:
@@ -42,15 +42,10 @@ func (c *Client) send(msg any) (uint32, error) {
|
||||
}
|
||||
|
||||
func (c *Client) receive(expectedID uint32) (any, error) {
|
||||
data, err := c.transport.Receive(c.timeout)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("receive: %w", err)
|
||||
}
|
||||
if len(data) == 0 {
|
||||
return nil, fmt.Errorf("no response")
|
||||
}
|
||||
c.transport.SetReadTimeout(c.timeout)
|
||||
dec := msgpack.NewDecoder(c.transport.Reader())
|
||||
var env Envelope
|
||||
if err := msgpack.Unmarshal(data, &env); err != nil {
|
||||
if err := dec.Decode(&env); err != nil {
|
||||
return nil, fmt.Errorf("decode envelope: %w", err)
|
||||
}
|
||||
if env.MessageID != expectedID {
|
||||
|
||||
Reference in New Issue
Block a user