From 6792e227c010a2e543e6dd402da2e733a3ab7ffe Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Tue, 22 Aug 2023 15:34:10 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=20uds=20=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E7=AB=AF=E6=97=A0=E6=B3=95=E6=AD=A3=E5=B8=B8=E6=8E=A5?= =?UTF-8?q?=E6=94=B6=E6=95=B0=E6=8D=AE=E5=8C=85=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/client/{unix.go => uds.go} | 7 ++-- .../client/{unix_events.go => uds_events.go} | 0 server/client/uds_test.go | 39 +++++++++++++++++++ 3 files changed, 42 insertions(+), 4 deletions(-) rename server/client/{unix.go => uds.go} (96%) rename server/client/{unix_events.go => uds_events.go} (100%) create mode 100644 server/client/uds_test.go diff --git a/server/client/unix.go b/server/client/uds.go similarity index 96% rename from server/client/unix.go rename to server/client/uds.go index b4f0d4e..59ade7a 100644 --- a/server/client/unix.go +++ b/server/client/uds.go @@ -1,7 +1,6 @@ package client import ( - "bufio" "github.com/kercylan98/minotaur/server" "github.com/kercylan98/minotaur/utils/concurrent" "net" @@ -51,13 +50,13 @@ func (slf *UnixDomainSocket) Run() error { } }() slf.OnUDSConnectionOpenedEvent(slf) + packet := make([]byte, 1024) for slf.packetPool != nil { - reader := bufio.NewReader(slf.conn) - packet, readErr := reader.ReadBytes('\n') + n, readErr := slf.conn.Read(packet) if readErr != nil { panic(readErr) } - slf.OnUDSConnectionReceivePacketEvent(slf, server.NewPacket(packet)) + slf.OnUDSConnectionReceivePacketEvent(slf, server.NewPacket(packet[:n])) } }() return nil diff --git a/server/client/unix_events.go b/server/client/uds_events.go similarity index 100% rename from server/client/unix_events.go rename to server/client/uds_events.go diff --git a/server/client/uds_test.go b/server/client/uds_test.go new file mode 100644 index 0000000..86e0a66 --- /dev/null +++ b/server/client/uds_test.go @@ -0,0 +1,39 @@ +package client_test + +import ( + "github.com/kercylan98/minotaur/server" + "github.com/kercylan98/minotaur/server/client" + "testing" + "time" +) + +func TestUnixDomainSocket_Write(t *testing.T) { + var close = make(chan struct{}) + srv := server.New(server.NetworkUnix) + srv.RegConnectionReceivePacketEvent(func(srv *server.Server, conn *server.Conn, packet server.Packet) { + t.Log(packet) + conn.Write(packet) + }) + srv.RegStartFinishEvent(func(srv *server.Server) { + time.Sleep(time.Second) + cli := client.NewUnixDomainSocket("./test.sock") + cli.RegUDSConnectionOpenedEvent(func(conn *client.UnixDomainSocket) { + conn.Write(server.NewPacketString("Hello~")) + }) + cli.RegUDSConnectionReceivePacketEvent(func(conn *client.UnixDomainSocket, packet server.Packet) { + t.Log(packet) + close <- struct{}{} + }) + if err := cli.Run(); err != nil { + panic(err) + } + }) + go func() { + if err := srv.Run("./test.sock"); err != nil { + panic(err) + } + }() + + <-close + srv.Shutdown() +}