mirror of
https://github.com/Gouryella/drip.git
synced 2026-02-26 14:21:17 +00:00
- Removed the manual performance optimization configuration in main.go and replaced it with a new tuning module. - Add patterned GC tuning in server.go and tunnel_runner.go - Updated yamux configuration to a unified optimized configuration to improve throughput. - Implement connection pool preheating function to eliminate cold start delay. - Optimize session selection using a min-heap, reducing the time complexity from O(n) to O(log n). - Add a bufio.Reader pool and a buffer pool to reduce memory allocation. - Implement a fragmented lock manager to improve performance under high concurrency. - Adjust heartbeat and timeout configurations to suit high-throughput scenarios BREAKING CHANGE: Manual GC tuning configuration has been removed; automatic tuning mode is now used.
34 lines
586 B
Go
34 lines
586 B
Go
package netutil
|
|
|
|
import "net"
|
|
|
|
type CountingConn struct {
|
|
net.Conn
|
|
OnRead func(int64)
|
|
OnWrite func(int64)
|
|
}
|
|
|
|
func NewCountingConn(conn net.Conn, onRead, onWrite func(int64)) *CountingConn {
|
|
return &CountingConn{
|
|
Conn: conn,
|
|
OnRead: onRead,
|
|
OnWrite: onWrite,
|
|
}
|
|
}
|
|
|
|
func (c *CountingConn) Read(p []byte) (int, error) {
|
|
n, err := c.Conn.Read(p)
|
|
if n > 0 && c.OnRead != nil {
|
|
c.OnRead(int64(n))
|
|
}
|
|
return n, err
|
|
}
|
|
|
|
func (c *CountingConn) Write(p []byte) (int, error) {
|
|
n, err := c.Conn.Write(p)
|
|
if n > 0 && c.OnWrite != nil {
|
|
c.OnWrite(int64(n))
|
|
}
|
|
return n, err
|
|
}
|