From d6541a76ed2cfb77dd7c30b538fb76b96c4a9f51 Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Fri, 3 Apr 2026 17:47:03 +0900 Subject: [PATCH] Make roundTrip generic on response type --- lib/client/client.go | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/lib/client/client.go b/lib/client/client.go index 0859c96..1ae4291 100644 --- a/lib/client/client.go +++ b/lib/client/client.go @@ -70,21 +70,23 @@ func (c *Client) receive(expectedID uint32) (any, error) { return inner, nil } -func (c *Client) roundTrip(req any) (any, error) { +func roundTrip[T any](c *Client, req any) (*T, error) { id, err := c.send(req) if err != nil { return nil, err } - return c.receive(id) + resp, err := c.receive(id) + if err != nil { + return nil, err + } + typed, ok := resp.(*T) + if !ok { + return nil, fmt.Errorf("unexpected response: %T", resp) + } + return typed, nil } func (c *Client) PICOBOOT() error { - resp, err := c.roundTrip(&RequestPICOBOOT{}) - if err != nil { - return err - } - if _, ok := resp.(*ResponsePICOBOOT); !ok { - return fmt.Errorf("unexpected response: %T", resp) - } - return nil + _, err := roundTrip[ResponsePICOBOOT](c, &RequestPICOBOOT{}) + return err }