Make PacketConn more idiomatic and direct

This commit is contained in:
Lars Gierth 2018-03-03 21:19:40 -05:00
parent 6040dff26d
commit 9feee519c3
2 changed files with 15 additions and 18 deletions

29
net.go
View File

@ -60,6 +60,8 @@ type maConn struct {
raddr ma.Multiaddr raddr ma.Multiaddr
} }
var _ Conn = (*maConn)(nil)
// LocalMultiaddr returns the local address associated with // LocalMultiaddr returns the local address associated with
// this connection // this connection
func (c *maConn) LocalMultiaddr() ma.Multiaddr { func (c *maConn) LocalMultiaddr() ma.Multiaddr {
@ -251,14 +253,12 @@ func WrapNetListener(nl net.Listener) (Listener, error) {
// A PacketConn is a generic packet oriented network connection which uses an // A PacketConn is a generic packet oriented network connection which uses an
// underlying net.PacketConn, wrapped with the locally bound Multiaddr. // underlying net.PacketConn, wrapped with the locally bound Multiaddr.
type PacketConn interface { type PacketConn interface {
Connection() net.PacketConn net.PacketConn
Multiaddr() ma.Multiaddr LocalMultiaddr() ma.Multiaddr
ReadFrom(b []byte) (int, ma.Multiaddr, error) ReadFromMultiaddr(b []byte) (int, ma.Multiaddr, error)
WriteTo(b []byte, maddr ma.Multiaddr) (int, error) WriteToMultiaddr(b []byte, maddr ma.Multiaddr) (int, error)
Close() error
} }
// maPacketConn implements PacketConn // maPacketConn implements PacketConn
@ -267,28 +267,25 @@ type maPacketConn struct {
laddr ma.Multiaddr laddr ma.Multiaddr
} }
// Connection returns the embedded net.PacketConn. var _ PacketConn = (*maPacketConn)(nil)
func (l *maPacketConn) Connection() net.PacketConn {
return l.PacketConn
}
// Multiaddr returns the bound local Multiaddr. // LocalMultiaddr returns the bound local Multiaddr.
func (l *maPacketConn) Multiaddr() ma.Multiaddr { func (l *maPacketConn) LocalMultiaddr() ma.Multiaddr {
return l.laddr return l.laddr
} }
func (l *maPacketConn) ReadFrom(b []byte) (int, ma.Multiaddr, error) { func (l *maPacketConn) ReadFromMultiaddr(b []byte) (int, ma.Multiaddr, error) {
n, addr, err := l.PacketConn.ReadFrom(b) n, addr, err := l.ReadFrom(b)
maddr, _ := FromNetAddr(addr) maddr, _ := FromNetAddr(addr)
return n, maddr, err return n, maddr, err
} }
func (l *maPacketConn) WriteTo(b []byte, maddr ma.Multiaddr) (int, error) { func (l *maPacketConn) WriteToMultiaddr(b []byte, maddr ma.Multiaddr) (int, error) {
addr, err := ToNetAddr(maddr) addr, err := ToNetAddr(maddr)
if err != nil { if err != nil {
return 0, err return 0, err
} }
return l.PacketConn.WriteTo(b, addr) return l.WriteTo(b, addr)
} }
// ListenPacket announces on the local network address laddr. // ListenPacket announces on the local network address laddr.

View File

@ -255,8 +255,8 @@ func TestListenPacketAndDial(t *testing.T) {
wg.Add(1) wg.Add(1)
go func() { go func() {
if !pc.Multiaddr().Equal(maddr) { if !pc.LocalMultiaddr().Equal(maddr) {
t.Fatal("connection multiaddr not equal:", maddr, pc.Multiaddr()) t.Fatal("connection multiaddr not equal:", maddr, pc.LocalMultiaddr())
} }
buffer := make([]byte, 1024) buffer := make([]byte, 1024)