Files
x/internal/net/transport.go
T
2024-10-02 22:51:23 +08:00

37 lines
565 B
Go

package net
import (
"io"
"github.com/go-gost/core/common/bufpool"
)
const (
bufferSize = 64 * 1024
)
func Transport(rw1, rw2 io.ReadWriter) error {
errc := make(chan error, 1)
go func() {
errc <- CopyBuffer(rw1, rw2, bufferSize)
}()
go func() {
errc <- CopyBuffer(rw2, rw1, bufferSize)
}()
if err := <-errc; err != nil && err != io.EOF {
return err
}
return nil
}
func CopyBuffer(dst io.Writer, src io.Reader, bufSize int) error {
buf := bufpool.Get(bufSize)
defer bufpool.Put(buf)
_, err := io.CopyBuffer(dst, src, buf)
return err
}