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() +}