mirror of
https://github.com/v2fly/v2ray-core.git
synced 2026-05-01 18:19:08 -04:00
cleanup buffer usage
This commit is contained in:
@@ -123,8 +123,8 @@ func (h *Handler) Dial(ctx context.Context, dest net.Destination) (internet.Conn
|
||||
}
|
||||
|
||||
var (
|
||||
_ buf.MultiBufferReader = (*Connection)(nil)
|
||||
_ buf.MultiBufferWriter = (*Connection)(nil)
|
||||
_ buf.Reader = (*Connection)(nil)
|
||||
_ buf.Writer = (*Connection)(nil)
|
||||
)
|
||||
|
||||
type Connection struct {
|
||||
@@ -133,9 +133,8 @@ type Connection struct {
|
||||
localAddr net.Addr
|
||||
remoteAddr net.Addr
|
||||
|
||||
bytesReader io.Reader
|
||||
reader buf.Reader
|
||||
writer buf.Writer
|
||||
reader *buf.BufferedReader
|
||||
writer buf.Writer
|
||||
}
|
||||
|
||||
func NewConnection(stream ray.Ray) *Connection {
|
||||
@@ -149,9 +148,8 @@ func NewConnection(stream ray.Ray) *Connection {
|
||||
IP: []byte{0, 0, 0, 0},
|
||||
Port: 0,
|
||||
},
|
||||
bytesReader: buf.ToBytesReader(stream.InboundOutput()),
|
||||
reader: stream.InboundOutput(),
|
||||
writer: stream.InboundInput(),
|
||||
reader: buf.NewBufferedReader(stream.InboundOutput()),
|
||||
writer: stream.InboundInput(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -160,11 +158,11 @@ func (v *Connection) Read(b []byte) (int, error) {
|
||||
if v.closed {
|
||||
return 0, io.EOF
|
||||
}
|
||||
return v.bytesReader.Read(b)
|
||||
return v.reader.Read(b)
|
||||
}
|
||||
|
||||
func (v *Connection) ReadMultiBuffer() (buf.MultiBuffer, error) {
|
||||
return v.reader.Read()
|
||||
return v.reader.ReadMultiBuffer()
|
||||
}
|
||||
|
||||
// Write implements net.Conn.Write().
|
||||
@@ -172,14 +170,19 @@ func (v *Connection) Write(b []byte) (int, error) {
|
||||
if v.closed {
|
||||
return 0, io.ErrClosedPipe
|
||||
}
|
||||
return buf.ToBytesWriter(v.writer).Write(b)
|
||||
|
||||
l := len(b)
|
||||
mb := buf.NewMultiBufferCap(l/buf.Size + 1)
|
||||
mb.Write(b)
|
||||
return l, v.writer.WriteMultiBuffer(mb)
|
||||
}
|
||||
|
||||
func (v *Connection) WriteMultiBuffer(mb buf.MultiBuffer) error {
|
||||
if v.closed {
|
||||
return io.ErrClosedPipe
|
||||
}
|
||||
return v.writer.Write(mb)
|
||||
|
||||
return v.writer.WriteMultiBuffer(mb)
|
||||
}
|
||||
|
||||
// Close implements net.Conn.Close().
|
||||
|
||||
Reference in New Issue
Block a user