mirror of
https://github.com/ipfs/kubo.git
synced 2025-06-23 13:44:27 +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