diff --git a/contrib/codecs/websocket/wsjson/writer_test.go b/contrib/codecs/websocket/wsjson/writer_test.go deleted file mode 100644 index 926abb24756646da686927cc2f518873144c039f..0000000000000000000000000000000000000000 --- a/contrib/codecs/websocket/wsjson/writer_test.go +++ /dev/null @@ -1,30 +0,0 @@ -package wsjson - -import ( - "bytes" - "encoding/json" - "io" - "log" - "testing" -) - -type noTrailingNewlineWriter struct { - w io.Writer -} - -func (n *noTrailingNewlineWriter) Write(xs []byte) (int, error) { - if xs[len(xs)-1] == '\n' { - xs = xs[:len(xs)-1] - } - return n.w.Write(xs) -} - -func TestNoTrailingNewlineWriter(t *testing.T) { - buf := new(bytes.Buffer) - wr := &noTrailingNewlineWriter{w: buf} - enc := json.NewEncoder(wr) - enc.Encode(map[string]any{"hi": "there", "how": "are", "you": "?"}) - enc.Encode(map[string]any{"hi": "there", "how": "are", "you": "?"}) - enc.Encode(map[string]any{"hi": "there", "how": "are", "you": "?"}) - log.Println(string(buf.Bytes())) -} diff --git a/contrib/codecs/websocket/wsjson/wsjson.go b/contrib/codecs/websocket/wsjson/wsjson.go deleted file mode 100644 index 43e16ec4267d9e5c6bbf4ad9ed7acd23f6901938..0000000000000000000000000000000000000000 --- a/contrib/codecs/websocket/wsjson/wsjson.go +++ /dev/null @@ -1,53 +0,0 @@ -package wsjson - -import ( - "context" - "fmt" - - "gfx.cafe/util/go/bufpool" - json "github.com/goccy/go-json" - "gfx.cafe/open/websocket" -) - -// Read reads a JSON message from c into v. -// It will reuse buffers in between calls to avoid allocations. -func Read(ctx context.Context, c *websocket.Conn, v interface{}) error { - return read(ctx, c, v) -} - -func read(ctx context.Context, c *websocket.Conn, v interface{}) (err error) { - _, r, err := c.Reader(ctx) - if err != nil { - return err - } - b := bufpool.GetStd() - defer bufpool.PutStd(b) - _, err = b.ReadFrom(r) - if err != nil { - return err - } - err = json.NewDecoder(b).Decode(v) - if err != nil { - return fmt.Errorf("failed to unmarshal JSON: %w", err) - } - return nil -} - -// Write writes the JSON message v to c. -// It will reuse buffers in between calls to avoid allocations. -func Write(ctx context.Context, c *websocket.Conn, v interface{}) error { - return write(ctx, c, v) -} - -func write(ctx context.Context, c *websocket.Conn, v interface{}) (err error) { - w, err := c.Writer(ctx, websocket.MessageText) - if err != nil { - return err - } - st := json.NewEncoder(w) - err = st.Encode(v) - if err != nil { - return fmt.Errorf("failed to marshal JSON: %w", err) - } - return w.Close() -}