Quellcode durchsuchen

improve fetch performance

v2ray vor 9 Jahren
Ursprung
Commit
4c63e9e168
2 geänderte Dateien mit 9 neuen und 3 gelöschten Zeilen
  1. 6 0
      common/alloc/buffer.go
  2. 3 3
      transport/internet/kcp/connection.go

+ 6 - 0
common/alloc/buffer.go

@@ -40,6 +40,12 @@ func (b *Buffer) Clear() *Buffer {
 	return b
 }
 
+func (b *Buffer) Reset() *Buffer {
+	b.offset = defaultOffset
+	b.Value = b.head
+	return b
+}
+
 // AppendBytes appends one or more bytes to the end of the buffer.
 func (b *Buffer) AppendBytes(bytes ...byte) *Buffer {
 	b.Value = append(b.Value, bytes...)

+ 3 - 3
transport/internet/kcp/connection.go

@@ -333,11 +333,12 @@ func (this *Connection) updateTask() {
 
 func (this *Connection) FetchInputFrom(conn net.Conn) {
 	go func() {
+		payload := alloc.NewBuffer()
+		defer payload.Release()
 		for {
-			payload := alloc.NewBuffer()
+			payload.Reset()
 			nBytes, err := conn.Read(payload.Value)
 			if err != nil {
-				payload.Release()
 				return
 			}
 			payload.Slice(0, nBytes)
@@ -346,7 +347,6 @@ func (this *Connection) FetchInputFrom(conn net.Conn) {
 			} else {
 				log.Info("KCP|Connection: Invalid response from ", conn.RemoteAddr())
 			}
-			payload.Release()
 		}
 	}()
 }