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:
31
peer/peer.go
31
peer/peer.go
@ -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
42
peer/peer_test.go
Normal 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)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user