| 12345678910111213141516171819202122232425262728293031323334353637 |
- package io
- import (
- "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
- }
|