41 lines
713 B
Go
41 lines
713 B
Go
package ioutils
|
|
|
|
import (
|
|
"io"
|
|
"net"
|
|
)
|
|
|
|
type ReadWriteAddrCloser interface {
|
|
io.ReadWriteCloser
|
|
|
|
RemoteAddr() net.Addr
|
|
}
|
|
|
|
type SimpleReadWriteAddrCloser struct {
|
|
rw io.ReadWriteCloser
|
|
addr net.Addr
|
|
}
|
|
|
|
func NewSimpleReadWriteAddrCloser(rw io.ReadWriteCloser, addr net.Addr) *SimpleReadWriteAddrCloser {
|
|
return &SimpleReadWriteAddrCloser{
|
|
rw: rw,
|
|
addr: addr,
|
|
}
|
|
}
|
|
|
|
func (s *SimpleReadWriteAddrCloser) Read(p []byte) (int, error) {
|
|
return s.rw.Read(p)
|
|
}
|
|
|
|
func (s *SimpleReadWriteAddrCloser) Write(p []byte) (int, error) {
|
|
return s.rw.Write(p)
|
|
}
|
|
|
|
func (s *SimpleReadWriteAddrCloser) Close() error {
|
|
return s.rw.Close()
|
|
}
|
|
|
|
func (s *SimpleReadWriteAddrCloser) RemoteAddr() net.Addr {
|
|
return s.addr
|
|
}
|