1
0
mirror of https://github.com/ipfs/kubo.git synced 2025-06-22 21:21:43 +08:00

added peer with multihash multiaddrs

This commit is contained in:
Juan Batiz-Benet
2014-07-04 12:22:00 -07:00
parent 3b570d3f82
commit a321d8867e
2 changed files with 73 additions and 0 deletions

View File

@ -0,0 +1,31 @@
package peer
import (
ma "github.com/jbenet/go-multiaddr"
mh "github.com/jbenet/go-multihash"
)
type Peer struct {
Id mh.Multihash
Addresses []*ma.Multiaddr
}
func (p *Peer) AddAddress(a *ma.Multiaddr) {
p.Addresses = append(p.Addresses, a)
}
func (p *Peer) NetAddress(n string) *ma.Multiaddr {
for _, a := range p.Addresses {
ps, err := a.Protocols()
if err != nil {
continue // invalid addr
}
for _, p := range ps {
if p.Name == n {
return a
}
}
}
return nil
}

42
peer/peer_test.go Normal file
View File

@ -0,0 +1,42 @@
package peer
import (
ma "github.com/jbenet/go-multiaddr"
mh "github.com/jbenet/go-multihash"
"testing"
)
func TestNetAddress(t *testing.T) {
tcp, err := ma.NewMultiaddr("/ip4/127.0.0.1/tcp/1234")
if err != nil {
t.Error(err)
return
}
udp, err := ma.NewMultiaddr("/ip4/127.0.0.1/udp/2345")
if err != nil {
t.Error(err)
return
}
mh, err := mh.FromHexString("11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33")
if err != nil {
t.Error(err)
return
}
p := Peer{Id: mh}
p.AddAddress(tcp)
p.AddAddress(udp)
tcp2 := p.NetAddress("tcp")
if tcp2 != tcp {
t.Error("NetAddress lookup failed", tcp, tcp2)
}
udp2 := p.NetAddress("udp")
if udp2 != udp {
t.Error("NetAddress lookup failed", udp, udp2)
}
}