|
@@ -1,6 +1,7 @@
|
|
|
package network
|
|
|
|
|
|
import (
|
|
|
+ "errors"
|
|
|
"fmt"
|
|
|
"net"
|
|
|
"time"
|
|
@@ -10,14 +11,15 @@ const (
|
|
|
udpServerReceiveBufferSize = 1024
|
|
|
)
|
|
|
|
|
|
+var UDPServerIgnoreResponse = errors.New("忽略响应")
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
|
|
-
|
|
|
-type UDPServerRequestCallback func(data []byte) (send bool, responseBytes []byte, err error)
|
|
|
+
|
|
|
+type UDPServerRequestCallback func(data []byte) (responseBytes []byte, err error)
|
|
|
|
|
|
type UDPServerOption func(opt *UDPServerOptions)
|
|
|
|
|
@@ -146,21 +148,26 @@ func (server *UDPServer) dealRequest(data []byte, rAddr *net.UDPAddr, doneChan c
|
|
|
case <-doneChan:
|
|
|
return
|
|
|
default:
|
|
|
+
|
|
|
if server.options.requestCallback == nil {
|
|
|
server.response(server.conn, rAddr, data)
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- send, responseBytes, err := server.options.requestCallback(data)
|
|
|
- if !send {
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
+
|
|
|
+ responseBytes, err := server.options.requestCallback(data)
|
|
|
if err != nil {
|
|
|
+
|
|
|
+ if errors.Is(err, UDPServerIgnoreResponse) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
server.response(server.conn, rAddr, []byte(err.Error()))
|
|
|
+ return
|
|
|
}
|
|
|
|
|
|
server.response(server.conn, rAddr, responseBytes)
|
|
|
+ return
|
|
|
}
|
|
|
}
|
|
|
}
|