1
0
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:
Darien Raymond
2017-11-09 22:33:15 +01:00
parent 6e61538b36
commit 594ec15c09
41 changed files with 358 additions and 529 deletions

View File

@@ -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().