package iowrappers 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 }