@cryptotaxi247 / kubo / commits / 9b7fb704e

make net/conn.Conn conform to net.Conn

Juan Batiz-Benet committed Dec 14, 2014 at 10:59 UTC 9b7fb704eff7bfbbe8fdd047090dd43b8396d5b7
4 files changed +105 -2
net/conn/conn.go
+20
@@ -2,6 +2,7 @@ package conn
2
3 import (
4 "fmt"
5 + "net"
6 "time"
7
8 context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
@@ -85,6 +86,25 @@ func (c *singleConn) String() string {
86 return String(c, "singleConn")
87 }
88
89 +func (c *singleConn) LocalAddr() net.Addr {
90 + return c.maconn.LocalAddr()
91 +}
92 +
93 +func (c *singleConn) RemoteAddr() net.Addr {
94 + return c.maconn.RemoteAddr()
95 +}
96 +
97 +func (c *singleConn) SetDeadline(t time.Time) error {
98 + return c.maconn.SetDeadline(t)
99 +}
100 +func (c *singleConn) SetReadDeadline(t time.Time) error {
101 + return c.maconn.SetReadDeadline(t)
102 +}
103 +
104 +func (c *singleConn) SetWriteDeadline(t time.Time) error {
105 + return c.maconn.SetWriteDeadline(t)
106 +}
107 +
108 // LocalMultiaddr is the Multiaddr on this side
109 func (c *singleConn) LocalMultiaddr() ma.Multiaddr {
110 return c.maconn.LocalMultiaddr()
net/conn/interface.go
+10
@@ -2,6 +2,8 @@ package conn
2
3 import (
4 "errors"
5 + "net"
6 + "time"
7
8 peer "github.com/jbenet/go-ipfs/peer"
9 u "github.com/jbenet/go-ipfs/util"
@@ -17,6 +19,7 @@ type Map map[u.Key]Conn
19
20 // Conn is a generic message-based Peer-to-Peer connection.
21 type Conn interface {
22 +
23 // implement ContextCloser too!
24 ctxc.ContextCloser
25
@@ -35,6 +38,13 @@ type Conn interface {
38 // RemotePeer is the Peer on the remote side
39 RemotePeer() peer.Peer
40
41 + // net.Conn, cause duplicates.
42 + LocalAddr() net.Addr
43 + RemoteAddr() net.Addr
44 + SetDeadline(t time.Time) error
45 + SetReadDeadline(t time.Time) error
46 + SetWriteDeadline(t time.Time) error
47 +
48 msgio.Reader
49 msgio.Writer
50 }
net/conn/multiconn.go
+52 -2
@@ -3,7 +3,9 @@ package conn
3 import (
4 "errors"
5 "fmt"
6 + "net"
7 "sync"
8 + "time"
9
10 context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
11 ma "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
@@ -232,14 +234,62 @@ func (c *MultiConn) String() string {
234 return String(c, "MultiConn")
235 }
236
237 +func (c *MultiConn) LocalAddr() net.Addr {
238 + bc := c.BestConn()
239 + if bc == nil {
240 + return nil
241 + }
242 + return bc.LocalAddr()
243 +}
244 +
245 +func (c *MultiConn) RemoteAddr() net.Addr {
246 + bc := c.BestConn()
247 + if bc == nil {
248 + return nil
249 + }
250 + return bc.RemoteAddr()
251 +}
252 +
253 +func (c *MultiConn) SetDeadline(t time.Time) error {
254 + bc := c.BestConn()
255 + if bc == nil {
256 + return nil
257 + }
258 + return bc.SetDeadline(t)
259 +}
260 +
261 +func (c *MultiConn) SetReadDeadline(t time.Time) error {
262 + bc := c.BestConn()
263 + if bc == nil {
264 + return nil
265 + }
266 + return bc.SetReadDeadline(t)
267 +}
268 +
269 +func (c *MultiConn) SetWriteDeadline(t time.Time) error {
270 + bc := c.BestConn()
271 + if bc == nil {
272 + return nil
273 + }
274 + return bc.SetWriteDeadline(t)
275 +}
276 +
277 // LocalMultiaddr is the Multiaddr on this side
278 func (c *MultiConn) LocalMultiaddr() ma.Multiaddr {
237 - return c.BestConn().LocalMultiaddr()
279 + bc := c.BestConn()
280 + if bc == nil {
281 + return nil
282 + }
283 + return bc.LocalMultiaddr()
284 }
285
286 // RemoteMultiaddr is the Multiaddr on the remote side
287 func (c *MultiConn) RemoteMultiaddr() ma.Multiaddr {
242 - return c.BestConn().RemoteMultiaddr()
288 + bc := c.BestConn()
289 + if bc == nil {
290 + return nil
291 + }
292 + return bc.RemoteMultiaddr()
293 }
294
295 // LocalPeer is the Peer on this side
net/conn/secure_conn.go
+23
@@ -1,6 +1,9 @@
1 package conn
2
3 import (
4 + "net"
5 + "time"
6 +
7 context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
8 msgio "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-msgio"
9 ma "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
@@ -63,6 +66,26 @@ func (c *secureConn) String() string {
66 return String(c, "secureConn")
67 }
68
69 +func (c *secureConn) LocalAddr() net.Addr {
70 + return c.insecure.LocalAddr()
71 +}
72 +
73 +func (c *secureConn) RemoteAddr() net.Addr {
74 + return c.insecure.RemoteAddr()
75 +}
76 +
77 +func (c *secureConn) SetDeadline(t time.Time) error {
78 + return c.insecure.SetDeadline(t)
79 +}
80 +
81 +func (c *secureConn) SetReadDeadline(t time.Time) error {
82 + return c.insecure.SetReadDeadline(t)
83 +}
84 +
85 +func (c *secureConn) SetWriteDeadline(t time.Time) error {
86 + return c.insecure.SetWriteDeadline(t)
87 +}
88 +
89 // LocalMultiaddr is the Multiaddr on this side
90 func (c *secureConn) LocalMultiaddr() ma.Multiaddr {
91 return c.insecure.LocalMultiaddr()