| 12345678910111213141516171819202122232425262728293031323334353637 | package ioimport (	"io"	"v2ray.com/core/common/errors"	"v2ray.com/core/common/log")func Pipe(reader Reader, writer Writer) error {	for {		buffer, err := reader.Read()		if err != nil {			log.Debug("IO: Pipe exits as ", err)			return err		}		if buffer.IsEmpty() {			buffer.Release()			continue		}		err = writer.Write(buffer)		if err != nil {			log.Debug("IO: Pipe exits as ", err)			buffer.Release()			return err		}	}}func PipeUntilEOF(reader Reader, writer Writer) error {	err := Pipe(reader, writer)	if err != nil && errors.Cause(err) != io.EOF {		return err	}	return nil}
 |