Skip to content

Commit 1e79033

Browse files
committed
turn NetListener() method on listener interface into a helper method
This method made implementing the manet.Listener interface annoying. Also, this lets us drop the "use with caution" warning as we're now *wrapping* the listener instead of exposing internal state.
1 parent 97d8056 commit 1e79033

File tree

1 file changed

+21
-9
lines changed

1 file changed

+21
-9
lines changed

net.go

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -153,10 +153,6 @@ func Dial(remote ma.Multiaddr) (Conn, error) {
153153
// it uses an embedded net.Listener, overriding net.Listener.Accept to
154154
// return a Conn and providing Multiaddr.
155155
type Listener interface {
156-
157-
// NetListener returns the embedded net.Listener. Use with caution.
158-
NetListener() net.Listener
159-
160156
// Accept waits for and returns the next connection to the listener.
161157
// Returns a Multiaddr friendly Conn
162158
Accept() (Conn, error)
@@ -172,17 +168,29 @@ type Listener interface {
172168
Addr() net.Addr
173169
}
174170

171+
type netListenerAdapter struct {
172+
Listener
173+
}
174+
175+
func (nla *netListenerAdapter) Accept() (net.Conn, error) {
176+
return nla.Listener.Accept()
177+
}
178+
179+
// NetListener turns this Listener into a net.Listener.
180+
//
181+
// * Connections returned from Accept implement multiaddr-net Conn.
182+
// * Calling WrapNetListener on the net.Listener returned by this function will
183+
// return the original (underlying) multiaddr-net Listener.
184+
func NetListener(l Listener) net.Listener {
185+
return &netListenerAdapter{l}
186+
}
187+
175188
// maListener implements Listener
176189
type maListener struct {
177190
net.Listener
178191
laddr ma.Multiaddr
179192
}
180193

181-
// NetListener returns the embedded net.Listener. Use with caution.
182-
func (l *maListener) NetListener() net.Listener {
183-
return l.Listener
184-
}
185-
186194
// Accept waits for and returns the next connection to the listener.
187195
// Returns a Multiaddr friendly Conn
188196
func (l *maListener) Accept() (Conn, error) {
@@ -237,6 +245,10 @@ func Listen(laddr ma.Multiaddr) (Listener, error) {
237245

238246
// WrapNetListener wraps a net.Listener with a manet.Listener.
239247
func WrapNetListener(nl net.Listener) (Listener, error) {
248+
if nla, ok := nl.(*netListenerAdapter); ok {
249+
return nla.Listener, nil
250+
}
251+
240252
laddr, err := FromNetAddr(nl.Addr())
241253
if err != nil {
242254
return nil, err

0 commit comments

Comments
 (0)