mirror of
https://github.com/v2fly/v2ray-core.git
synced 2026-01-02 15:25:28 -05:00
fast read on first packet
This commit is contained in:
@@ -12,8 +12,30 @@ type BytesToBufferReader struct {
|
||||
buffer []byte
|
||||
}
|
||||
|
||||
func NewBytesToBufferReader(reader io.Reader) Reader {
|
||||
return &BytesToBufferReader{
|
||||
reader: reader,
|
||||
}
|
||||
}
|
||||
|
||||
func (r *BytesToBufferReader) readSmall() (MultiBuffer, error) {
|
||||
b := New()
|
||||
if err := b.Reset(ReadFrom(r.reader)); err != nil {
|
||||
b.Release()
|
||||
return nil, err
|
||||
}
|
||||
if b.IsFull() {
|
||||
r.buffer = make([]byte, 32*1024)
|
||||
}
|
||||
return NewMultiBufferValue(b), nil
|
||||
}
|
||||
|
||||
// Read implements Reader.Read().
|
||||
func (r *BytesToBufferReader) Read() (MultiBuffer, error) {
|
||||
if r.buffer == nil {
|
||||
return r.readSmall()
|
||||
}
|
||||
|
||||
nBytes, err := r.reader.Read(r.buffer)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
Reference in New Issue
Block a user