refactor(countrw): move to iout
This commit is contained in:
28
iout/tee_closer.go
Normal file
28
iout/tee_closer.go
Normal file
@@ -0,0 +1,28 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user