From 2f131ab25267585bc22cfc9c29a37ec16849eca1 Mon Sep 17 00:00:00 2001 From: Allen Xu Date: Sun, 3 Apr 2022 10:49:19 +0800 Subject: [PATCH] Fix default protocol --- protocol.go | 3 ++- protocol_test.go | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 protocol_test.go diff --git a/protocol.go b/protocol.go index f87649b..1a689a2 100644 --- a/protocol.go +++ b/protocol.go @@ -28,8 +28,9 @@ func (d *DefaultProtocol) UnPacket(c *Connection, buffer *ringbuffer.RingBuffer) copy(userBuffer, s) copy(userBuffer[len(s):], e) + buffer.RetrieveAll() - return nil, userBuffer + return nil, userBuffer[:size] } else { buffer.RetrieveAll() diff --git a/protocol_test.go b/protocol_test.go new file mode 100644 index 0000000..5b18f64 --- /dev/null +++ b/protocol_test.go @@ -0,0 +1,36 @@ +package gev + +import ( + "testing" + + "github.com/Allenxuxu/gev/eventloop" + "github.com/Allenxuxu/ringbuffer" + "github.com/stretchr/testify/assert" +) + +func TestDefaultProtocol_UnPacket(t *testing.T) { + p := DefaultProtocol{} + + buffer := ringbuffer.New(4) + n, err := buffer.Write([]byte("1234")) + assert.Equal(t, 4, n) + assert.Nil(t, err) + + buffer.Peek(2) + buffer.Retrieve(2) + n, err = buffer.Write([]byte("ab")) + assert.Equal(t, 2, n) + assert.Nil(t, err) + + _, data := p.UnPacket(newTmpConnection(), buffer) + assert.Equal(t, []byte("34ab"), data) + + assert.Equal(t, 0, buffer.Length()) +} + +func newTmpConnection() *Connection { + lp, _ := eventloop.New() + return &Connection{ + loop: lp, + } +}