diff --git a/contrib/codecs/websocket/codec.go b/contrib/codecs/websocket/codec.go index 862ba5546046a8a2c9c8d517a1b55b4b4ecd09d3..5db5d9cf23c39dedb2d3f9b11b6ccbe26a864e38 100644 --- a/contrib/codecs/websocket/codec.go +++ b/contrib/codecs/websocket/codec.go @@ -14,7 +14,6 @@ import ( "gfx.cafe/open/jrpc/pkg/jjson" "gfx.cafe/open/jrpc/pkg/jsonrpc" - "gfx.cafe/open/jrpc/pkg/serverutil" ) type Codec struct { @@ -70,30 +69,23 @@ func heartbeat(ctx context.Context, c *websocket.Conn, d time.Duration) { } } -func (c *Codec) decodeSingleMessage(ctx context.Context) (*serverutil.Bundle, error) { +func (c *Codec) ReadBatch(ctx context.Context) ([]*jsonrpc.Message, bool, error) { if err := c.decLock.Acquire(ctx, 1); err != nil { - return nil, err + return nil, false, err } defer c.decLock.Release(1) c.decBuf = c.decBuf[:0] _, r, err := c.conn.Reader(ctx) if err != nil { - return nil, err + return nil, false, err } defer io.Copy(io.Discard, r) err = jjson.Decode(r, &c.decBuf) - if err != nil { - return nil, err - } - return serverutil.ParseBundle(c.decBuf), nil -} - -func (c *Codec) ReadBatch(ctx context.Context) ([]*jsonrpc.Message, bool, error) { - ans, err := c.decodeSingleMessage(ctx) if err != nil { return nil, false, err } - return ans.Messages, ans.Batch, nil + a, b := jsonrpc.ParseMessage(c.decBuf) + return a, b, nil } func (c *Codec) Write(p []byte) (n int, err error) {