converge/pkg/support/ioutils/readwriteaddrcombiner.go

38 lines
792 B
Go

package ioutils
import (
"io"
"net"
)
type ReadWriterAddrCombiner struct {
reader io.Reader
writer io.Writer
closer func() error
remoteAddr net.Addr
}
func (rw *ReadWriterAddrCombiner) Read(p []byte) (n int, err error) {
return rw.reader.Read(p)
}
func NewReadWriterAddrCombiner(reader io.Reader, writer io.Writer,
closer func() error, remoteAddr net.Addr) *ReadWriterAddrCombiner {
return &ReadWriterAddrCombiner{
reader: reader,
writer: writer,
closer: closer,
remoteAddr: remoteAddr,
}
}
func (rw *ReadWriterAddrCombiner) Write(p []byte) (n int, err error) {
return rw.writer.Write(p)
}
func (rw *ReadWriterAddrCombiner) Close() error {
return rw.closer()
}
func (rw *ReadWriterAddrCombiner) RemoteAddr() net.Addr {
return rw.remoteAddr
}