29 lines
435 B
Go
29 lines
435 B
Go
package iout
|
|
|
|
import "io"
|
|
|
|
type teeCloser struct {
|
|
r io.ReadCloser
|
|
w io.WriteCloser
|
|
}
|
|
|
|
func NewTeeCloser(r io.ReadCloser, w io.WriteCloser) io.ReadCloser {
|
|
return &teeCloser{r, w}
|
|
}
|
|
|
|
func (t *teeCloser) Read(p []byte) (int, error) {
|
|
n, err := t.r.Read(p)
|
|
if n > 0 {
|
|
if n, err := t.w.Write(p[:n]); err != nil {
|
|
return n, err
|
|
}
|
|
}
|
|
return n, err
|
|
}
|
|
|
|
func (t *teeCloser) Close() error {
|
|
t.r.Close()
|
|
t.w.Close()
|
|
return nil
|
|
}
|