From ac385120c6e34fa6584f3856d5db949a21bbb65e Mon Sep 17 00:00:00 2001
From: Anmol Sethi <hi@nhooyr.io>
Date: Fri, 13 Oct 2023 00:29:58 -0700
Subject: [PATCH] wspb: Remove

The library we're currently using for protobufs is deprecated. Doesn't belong in the library core
anyway.

Closes #311
Updates #297
---
 conn_test.go | 21 ---------------
 wspb/wspb.go | 73 ----------------------------------------------------
 2 files changed, 94 deletions(-)
 delete mode 100644 wspb/wspb.go

diff --git a/conn_test.go b/conn_test.go
index 639666b..a3f3d78 100644
--- a/conn_test.go
+++ b/conn_test.go
@@ -17,8 +17,6 @@ import (
 	"time"
 
 	"github.com/gin-gonic/gin"
-	"github.com/golang/protobuf/ptypes"
-	"github.com/golang/protobuf/ptypes/duration"
 
 	"nhooyr.io/websocket"
 	"nhooyr.io/websocket/internal/errd"
@@ -27,7 +25,6 @@ import (
 	"nhooyr.io/websocket/internal/test/xrand"
 	"nhooyr.io/websocket/internal/xsync"
 	"nhooyr.io/websocket/wsjson"
-	"nhooyr.io/websocket/wspb"
 )
 
 func TestConn(t *testing.T) {
@@ -267,24 +264,6 @@ func TestConn(t *testing.T) {
 		err = c1.Close(websocket.StatusNormalClosure, "")
 		assert.Success(t, err)
 	})
-
-	t.Run("wspb", func(t *testing.T) {
-		tt, c1, c2 := newConnTest(t, nil, nil)
-
-		tt.goEchoLoop(c2)
-
-		exp := ptypes.DurationProto(100)
-		err := wspb.Write(tt.ctx, c1, exp)
-		assert.Success(t, err)
-
-		act := &duration.Duration{}
-		err = wspb.Read(tt.ctx, c1, act)
-		assert.Success(t, err)
-		assert.Equal(t, "read msg", exp, act)
-
-		err = c1.Close(websocket.StatusNormalClosure, "")
-		assert.Success(t, err)
-	})
 }
 
 func TestWasm(t *testing.T) {
diff --git a/wspb/wspb.go b/wspb/wspb.go
deleted file mode 100644
index e43042d..0000000
--- a/wspb/wspb.go
+++ /dev/null
@@ -1,73 +0,0 @@
-// Package wspb provides helpers for reading and writing protobuf messages.
-package wspb // import "nhooyr.io/websocket/wspb"
-
-import (
-	"bytes"
-	"context"
-	"fmt"
-
-	"github.com/golang/protobuf/proto"
-
-	"nhooyr.io/websocket"
-	"nhooyr.io/websocket/internal/bpool"
-	"nhooyr.io/websocket/internal/errd"
-)
-
-// Read reads a protobuf message from c into v.
-// It will reuse buffers in between calls to avoid allocations.
-func Read(ctx context.Context, c *websocket.Conn, v proto.Message) error {
-	return read(ctx, c, v)
-}
-
-func read(ctx context.Context, c *websocket.Conn, v proto.Message) (err error) {
-	defer errd.Wrap(&err, "failed to read protobuf message")
-
-	typ, r, err := c.Reader(ctx)
-	if err != nil {
-		return err
-	}
-
-	if typ != websocket.MessageBinary {
-		c.Close(websocket.StatusUnsupportedData, "expected binary message")
-		return fmt.Errorf("expected binary message for protobuf but got: %v", typ)
-	}
-
-	b := bpool.Get()
-	defer bpool.Put(b)
-
-	_, err = b.ReadFrom(r)
-	if err != nil {
-		return err
-	}
-
-	err = proto.Unmarshal(b.Bytes(), v)
-	if err != nil {
-		c.Close(websocket.StatusInvalidFramePayloadData, "failed to unmarshal protobuf")
-		return fmt.Errorf("failed to unmarshal protobuf: %w", err)
-	}
-
-	return nil
-}
-
-// Write writes the protobuf message v to c.
-// It will reuse buffers in between calls to avoid allocations.
-func Write(ctx context.Context, c *websocket.Conn, v proto.Message) error {
-	return write(ctx, c, v)
-}
-
-func write(ctx context.Context, c *websocket.Conn, v proto.Message) (err error) {
-	defer errd.Wrap(&err, "failed to write protobuf message")
-
-	b := bpool.Get()
-	pb := proto.NewBuffer(b.Bytes())
-	defer func() {
-		bpool.Put(bytes.NewBuffer(pb.Bytes()))
-	}()
-
-	err = pb.Marshal(v)
-	if err != nil {
-		return fmt.Errorf("failed to marshal protobuf: %w", err)
-	}
-
-	return c.Write(ctx, websocket.MessageBinary, pb.Bytes())
-}
-- 
GitLab