Skip to content

Commit 45d01ac

Browse files
committed
ReadAll for tcp_server
1 parent 812aa2f commit 45d01ac

File tree

2 files changed

+23
-7
lines changed

2 files changed

+23
-7
lines changed

server/json_rpc_handler.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ import (
44
"github.com/hyperf/roc"
55
"github.com/hyperf/roc/exception"
66
"github.com/hyperf/roc/formatter"
7-
"github.com/hyperf/roc/log"
8-
"go.uber.org/zap"
97
"net"
108
)
119

@@ -22,7 +20,6 @@ func NewTcpServerHandler(callback JsonRPCHandler) Handler {
2220
var response any
2321

2422
if err != nil {
25-
log.Logger().Error("RPC_UnSerialize", zap.String("body", body))
2623
response = &formatter.JsonRPCErrorResponse[any]{
2724
Id: route.Id,
2825
Error: &formatter.JsonRPCError{

server/tcp_server.go

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,31 @@ func (s *TcpServer) Start() {
5252
}
5353
}
5454

55+
func (s *TcpServer) readAll(conn net.Conn, length int) ([]byte, error) {
56+
ret := make([]byte, length)
57+
recvLength := 0
58+
var l int
59+
var err error
60+
for {
61+
bt := make([]byte, length-recvLength)
62+
l, err = conn.Read(bt)
63+
if err != nil {
64+
return nil, err
65+
}
66+
67+
recvLength += l
68+
ret = append(ret, bt...)
69+
if recvLength >= length {
70+
return ret, nil
71+
}
72+
}
73+
74+
}
75+
5576
func (s *TcpServer) handle(conn net.Conn) {
5677
defer conn.Close()
5778
for {
58-
buf := make([]byte, 4)
59-
_, err := conn.Read(buf)
79+
buf, err := s.readAll(conn, 4)
6080
if err != nil {
6181
if err != io.EOF {
6282
log.Logger().Error("Error reading", zap.Error(err))
@@ -65,8 +85,7 @@ func (s *TcpServer) handle(conn net.Conn) {
6585
}
6686

6787
len32 := binary.BigEndian.Uint32(buf)
68-
buf = make([]byte, len32)
69-
_, err = conn.Read(buf)
88+
buf, err = s.readAll(conn, int(len32))
7089
if err != nil {
7190
if err != io.EOF {
7291
log.Logger().Error("Error reading", zap.Error(err))

0 commit comments

Comments
 (0)