Commit 0078264a authored by Juan Batiz-Benet's avatar Juan Batiz-Benet

added to net/conn interface

parent 20d1d354
......@@ -88,6 +88,21 @@ func (c *singleConn) close() error {
return err
}
// ID is an identifier unique to this connection.
func (c *singleConn) ID() string {
return ID(c)
}
// LocalMultiaddr is the Multiaddr on this side
func (c *singleConn) LocalMultiaddr() ma.Multiaddr {
return c.maconn.LocalMultiaddr()
}
// RemoteMultiaddr is the Multiaddr on the remote side
func (c *singleConn) RemoteMultiaddr() ma.Multiaddr {
return c.maconn.RemoteMultiaddr()
}
// LocalPeer is the Peer on this side
func (c *singleConn) LocalPeer() *peer.Peer {
return c.local
......@@ -108,6 +123,16 @@ func (c *singleConn) Out() chan<- []byte {
return c.msgio.outgoing.MsgChan
}
// ID returns the
func ID(c Conn) string {
l := fmt.Sprintf("%s/%s", c.LocalMultiaddr(), c.LocalPeer().ID)
r := fmt.Sprintf("%s/%s", c.RemoteMultiaddr(), c.RemotePeer().ID)
lh := u.Hash([]byte(l))
rh := u.Hash([]byte(r))
ch := u.XOR(lh, rh)
return u.Key(ch).Pretty()
}
// Dialer is an object that can open connections. We could have a "convenience"
// Dial function as before, but it would have many arguments, as dialing is
// no longer simple (need a peerstore, a local peer, a context, a network, etc)
......
......@@ -15,9 +15,18 @@ type Conn interface {
// implement ContextCloser too!
ContextCloser
// ID is an identifier unique to this connection.
ID() string
// LocalMultiaddr is the Multiaddr on this side
LocalMultiaddr() ma.Multiaddr
// LocalPeer is the Peer on this side
LocalPeer() *peer.Peer
// RemoteMultiaddr is the Multiaddr on the remote side
RemoteMultiaddr() ma.Multiaddr
// RemotePeer is the Peer on the remote side
RemotePeer() *peer.Peer
......
......@@ -4,6 +4,7 @@ import (
"errors"
context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
ma "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
spipe "github.com/jbenet/go-ipfs/crypto/spipe"
peer "github.com/jbenet/go-ipfs/peer"
......@@ -92,6 +93,21 @@ func (c *secureConn) close() error {
return err
}
// ID is an identifier unique to this connection.
func (c *secureConn) ID() string {
return ID(c)
}
// LocalMultiaddr is the Multiaddr on this side
func (c *secureConn) LocalMultiaddr() ma.Multiaddr {
return c.insecure.LocalMultiaddr()
}
// RemoteMultiaddr is the Multiaddr on the remote side
func (c *secureConn) RemoteMultiaddr() ma.Multiaddr {
return c.insecure.RemoteMultiaddr()
}
// LocalPeer is the Peer on this side
func (c *secureConn) LocalPeer() *peer.Peer {
return c.insecure.LocalPeer()
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment