mirror of
https://github.com/ehang-io/nps.git
synced 2025-07-03 04:53:50 +00:00
31 lines
453 B
Go
31 lines
453 B
Go
package core
|
|
|
|
import "io"
|
|
|
|
func CopyBuffer(dst io.Writer, src io.Reader) (written int64, err error) {
|
|
buf := CopyBuff.Get()
|
|
defer CopyBuff.Put(buf)
|
|
for {
|
|
nr, er := src.Read(buf)
|
|
if nr > 0 {
|
|
nw, ew := dst.Write(buf[0:nr])
|
|
if nw > 0 {
|
|
written += int64(nw)
|
|
}
|
|
if ew != nil {
|
|
err = ew
|
|
break
|
|
}
|
|
if nr != nw {
|
|
err = io.ErrShortWrite
|
|
break
|
|
}
|
|
}
|
|
if er != nil {
|
|
err = er
|
|
break
|
|
}
|
|
}
|
|
return written, err
|
|
}
|