Stream-decode msgpack responses instead of waiting for read timeout

This commit is contained in:
Ian Gulliver
2026-04-04 19:54:46 +09:00
parent f8e4249047
commit 43bf0fe951
3 changed files with 15 additions and 23 deletions

View File

@@ -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 {