mirror of
https://github.com/ipfs/kubo.git
synced 2025-06-27 16:07:42 +08:00
Merge pull request #2794 from ipfs/deps/libp2p/3.3.1
update libp2p to v3.3.1
This commit is contained in:
@ -24,9 +24,9 @@ import (
|
|||||||
"github.com/ipfs/go-ipfs/core/corerouting"
|
"github.com/ipfs/go-ipfs/core/corerouting"
|
||||||
nodeMount "github.com/ipfs/go-ipfs/fuse/node"
|
nodeMount "github.com/ipfs/go-ipfs/fuse/node"
|
||||||
fsrepo "github.com/ipfs/go-ipfs/repo/fsrepo"
|
fsrepo "github.com/ipfs/go-ipfs/repo/fsrepo"
|
||||||
conn "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net/conn"
|
conn "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net/conn"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
util "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
util "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
prometheus "gx/ipfs/QmdhsRK1EK2fvAz2i2SH5DEfkL6seDuyMYEsxKa9Braim3/client_golang/prometheus"
|
prometheus "gx/ipfs/QmdhsRK1EK2fvAz2i2SH5DEfkL6seDuyMYEsxKa9Braim3/client_golang/prometheus"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -247,9 +247,9 @@ func daemonFunc(req cmds.Request, res cmds.Response) {
|
|||||||
repo.Close() // because ownership hasn't been transferred to the node
|
repo.Close() // because ownership hasn't been transferred to the node
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var infos []peer.PeerInfo
|
var infos []pstore.PeerInfo
|
||||||
for _, addr := range servers {
|
for _, addr := range servers {
|
||||||
infos = append(infos, peer.PeerInfo{
|
infos = append(infos, pstore.PeerInfo{
|
||||||
ID: addr.ID(),
|
ID: addr.ID(),
|
||||||
Addrs: []ma.Multiaddr{addr.Transport()},
|
Addrs: []ma.Multiaddr{addr.Transport()},
|
||||||
})
|
})
|
||||||
|
@ -18,11 +18,12 @@ import (
|
|||||||
"os/signal"
|
"os/signal"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
ci "gx/ipfs/QmUEUu1CM8bxBJxc3ZLojAi8evhTr4byQogWstABet79oY/go-libp2p-crypto"
|
ci "gx/ipfs/QmUEUu1CM8bxBJxc3ZLojAi8evhTr4byQogWstABet79oY/go-libp2p-crypto"
|
||||||
|
secio "gx/ipfs/QmUmvxT1NTXjk4v9ucPHgC5NHd7s2nHXrVvFbs68NrGuZC/go-libp2p-secio"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
||||||
secio "gx/ipfs/QmbuSYB51KtX8izgab1fSyBgsyMH2hTuCfBtXm77PeXWca/go-libp2p-secio"
|
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var verbose = false
|
var verbose = false
|
||||||
@ -110,7 +111,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func setupPeer(a args) (peer.ID, peer.Peerstore, error) {
|
func setupPeer(a args) (peer.ID, pstore.Peerstore, error) {
|
||||||
if a.keybits < 1024 {
|
if a.keybits < 1024 {
|
||||||
return "", nil, errors.New("Bitsize less than 1024 is considered unsafe.")
|
return "", nil, errors.New("Bitsize less than 1024 is considered unsafe.")
|
||||||
}
|
}
|
||||||
@ -126,7 +127,7 @@ func setupPeer(a args) (peer.ID, peer.Peerstore, error) {
|
|||||||
return "", nil, err
|
return "", nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
ps := peer.NewPeerstore()
|
ps := pstore.NewPeerstore()
|
||||||
ps.AddPrivKey(p, sk)
|
ps.AddPrivKey(p, sk)
|
||||||
ps.AddPubKey(p, pk)
|
ps.AddPubKey(p, pk)
|
||||||
|
|
||||||
|
@ -11,13 +11,14 @@ import (
|
|||||||
config "github.com/ipfs/go-ipfs/repo/config"
|
config "github.com/ipfs/go-ipfs/repo/config"
|
||||||
lgbl "github.com/ipfs/go-ipfs/thirdparty/loggables"
|
lgbl "github.com/ipfs/go-ipfs/thirdparty/loggables"
|
||||||
math2 "github.com/ipfs/go-ipfs/thirdparty/math2"
|
math2 "github.com/ipfs/go-ipfs/thirdparty/math2"
|
||||||
host "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/host"
|
|
||||||
inet "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net"
|
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
|
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
|
host "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/host"
|
||||||
|
inet "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net"
|
||||||
goprocess "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess"
|
goprocess "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess"
|
||||||
procctx "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess/context"
|
procctx "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess/context"
|
||||||
periodicproc "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess/periodic"
|
periodicproc "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess/periodic"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -49,7 +50,7 @@ type BootstrapConfig struct {
|
|||||||
// BootstrapPeers is a function that returns a set of bootstrap peers
|
// BootstrapPeers is a function that returns a set of bootstrap peers
|
||||||
// for the bootstrap process to use. This makes it possible for clients
|
// for the bootstrap process to use. This makes it possible for clients
|
||||||
// to control the peers the process uses at any moment.
|
// to control the peers the process uses at any moment.
|
||||||
BootstrapPeers func() []peer.PeerInfo
|
BootstrapPeers func() []pstore.PeerInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
// DefaultBootstrapConfig specifies default sane parameters for bootstrapping.
|
// DefaultBootstrapConfig specifies default sane parameters for bootstrapping.
|
||||||
@ -59,9 +60,9 @@ var DefaultBootstrapConfig = BootstrapConfig{
|
|||||||
ConnectionTimeout: (30 * time.Second) / 3, // Perod / 3
|
ConnectionTimeout: (30 * time.Second) / 3, // Perod / 3
|
||||||
}
|
}
|
||||||
|
|
||||||
func BootstrapConfigWithPeers(pis []peer.PeerInfo) BootstrapConfig {
|
func BootstrapConfigWithPeers(pis []pstore.PeerInfo) BootstrapConfig {
|
||||||
cfg := DefaultBootstrapConfig
|
cfg := DefaultBootstrapConfig
|
||||||
cfg.BootstrapPeers = func() []peer.PeerInfo {
|
cfg.BootstrapPeers = func() []pstore.PeerInfo {
|
||||||
return pis
|
return pis
|
||||||
}
|
}
|
||||||
return cfg
|
return cfg
|
||||||
@ -128,7 +129,7 @@ func bootstrapRound(ctx context.Context, host host.Host, cfg BootstrapConfig) er
|
|||||||
numToDial := cfg.MinPeerThreshold - len(connected)
|
numToDial := cfg.MinPeerThreshold - len(connected)
|
||||||
|
|
||||||
// filter out bootstrap nodes we are already connected to
|
// filter out bootstrap nodes we are already connected to
|
||||||
var notConnected []peer.PeerInfo
|
var notConnected []pstore.PeerInfo
|
||||||
for _, p := range peers {
|
for _, p := range peers {
|
||||||
if host.Network().Connectedness(p.ID) != inet.Connected {
|
if host.Network().Connectedness(p.ID) != inet.Connected {
|
||||||
notConnected = append(notConnected, p)
|
notConnected = append(notConnected, p)
|
||||||
@ -152,7 +153,7 @@ func bootstrapRound(ctx context.Context, host host.Host, cfg BootstrapConfig) er
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func bootstrapConnect(ctx context.Context, ph host.Host, peers []peer.PeerInfo) error {
|
func bootstrapConnect(ctx context.Context, ph host.Host, peers []pstore.PeerInfo) error {
|
||||||
if len(peers) < 1 {
|
if len(peers) < 1 {
|
||||||
return ErrNotEnoughBootstrapPeers
|
return ErrNotEnoughBootstrapPeers
|
||||||
}
|
}
|
||||||
@ -167,12 +168,12 @@ func bootstrapConnect(ctx context.Context, ph host.Host, peers []peer.PeerInfo)
|
|||||||
// Also, performed asynchronously for dial speed.
|
// Also, performed asynchronously for dial speed.
|
||||||
|
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
go func(p peer.PeerInfo) {
|
go func(p pstore.PeerInfo) {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
defer log.EventBegin(ctx, "bootstrapDial", ph.ID(), p.ID).Done()
|
defer log.EventBegin(ctx, "bootstrapDial", ph.ID(), p.ID).Done()
|
||||||
log.Debugf("%s bootstrapping to %s", ph.ID(), p.ID)
|
log.Debugf("%s bootstrapping to %s", ph.ID(), p.ID)
|
||||||
|
|
||||||
ph.Peerstore().AddAddrs(p.ID, p.Addrs, peer.PermanentAddrTTL)
|
ph.Peerstore().AddAddrs(p.ID, p.Addrs, pstore.PermanentAddrTTL)
|
||||||
if err := ph.Connect(ctx, p); err != nil {
|
if err := ph.Connect(ctx, p); err != nil {
|
||||||
log.Event(ctx, "bootstrapDialFailed", p.ID)
|
log.Event(ctx, "bootstrapDialFailed", p.ID)
|
||||||
log.Debugf("failed to bootstrap with %v: %s", p.ID, err)
|
log.Debugf("failed to bootstrap with %v: %s", p.ID, err)
|
||||||
@ -201,12 +202,12 @@ func bootstrapConnect(ctx context.Context, ph host.Host, peers []peer.PeerInfo)
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func toPeerInfos(bpeers []config.BootstrapPeer) []peer.PeerInfo {
|
func toPeerInfos(bpeers []config.BootstrapPeer) []pstore.PeerInfo {
|
||||||
pinfos := make(map[peer.ID]*peer.PeerInfo)
|
pinfos := make(map[peer.ID]*pstore.PeerInfo)
|
||||||
for _, bootstrap := range bpeers {
|
for _, bootstrap := range bpeers {
|
||||||
pinfo, ok := pinfos[bootstrap.ID()]
|
pinfo, ok := pinfos[bootstrap.ID()]
|
||||||
if !ok {
|
if !ok {
|
||||||
pinfo = new(peer.PeerInfo)
|
pinfo = new(pstore.PeerInfo)
|
||||||
pinfos[bootstrap.ID()] = pinfo
|
pinfos[bootstrap.ID()] = pinfo
|
||||||
pinfo.ID = bootstrap.ID()
|
pinfo.ID = bootstrap.ID()
|
||||||
}
|
}
|
||||||
@ -214,7 +215,7 @@ func toPeerInfos(bpeers []config.BootstrapPeer) []peer.PeerInfo {
|
|||||||
pinfo.Addrs = append(pinfo.Addrs, bootstrap.Transport())
|
pinfo.Addrs = append(pinfo.Addrs, bootstrap.Transport())
|
||||||
}
|
}
|
||||||
|
|
||||||
var peers []peer.PeerInfo
|
var peers []pstore.PeerInfo
|
||||||
for _, pinfo := range pinfos {
|
for _, pinfo := range pinfos {
|
||||||
peers = append(peers, *pinfo)
|
peers = append(peers, *pinfo)
|
||||||
}
|
}
|
||||||
@ -222,9 +223,9 @@ func toPeerInfos(bpeers []config.BootstrapPeer) []peer.PeerInfo {
|
|||||||
return peers
|
return peers
|
||||||
}
|
}
|
||||||
|
|
||||||
func randomSubsetOfPeers(in []peer.PeerInfo, max int) []peer.PeerInfo {
|
func randomSubsetOfPeers(in []pstore.PeerInfo, max int) []pstore.PeerInfo {
|
||||||
n := math2.IntMin(max, len(in))
|
n := math2.IntMin(max, len(in))
|
||||||
var out []peer.PeerInfo
|
var out []pstore.PeerInfo
|
||||||
for _, val := range rand.Perm(len(in)) {
|
for _, val := range rand.Perm(len(in)) {
|
||||||
out = append(out, in[val])
|
out = append(out, in[val])
|
||||||
if len(out) >= n {
|
if len(out) >= n {
|
||||||
|
@ -6,11 +6,11 @@ import (
|
|||||||
|
|
||||||
config "github.com/ipfs/go-ipfs/repo/config"
|
config "github.com/ipfs/go-ipfs/repo/config"
|
||||||
testutil "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
testutil "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestSubsetWhenMaxIsGreaterThanLengthOfSlice(t *testing.T) {
|
func TestSubsetWhenMaxIsGreaterThanLengthOfSlice(t *testing.T) {
|
||||||
var ps []peer.PeerInfo
|
var ps []pstore.PeerInfo
|
||||||
sizeofSlice := 100
|
sizeofSlice := 100
|
||||||
for i := 0; i < sizeofSlice; i++ {
|
for i := 0; i < sizeofSlice; i++ {
|
||||||
pid, err := testutil.RandPeerID()
|
pid, err := testutil.RandPeerID()
|
||||||
@ -18,7 +18,7 @@ func TestSubsetWhenMaxIsGreaterThanLengthOfSlice(t *testing.T) {
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
ps = append(ps, peer.PeerInfo{ID: pid})
|
ps = append(ps, pstore.PeerInfo{ID: pid})
|
||||||
}
|
}
|
||||||
out := randomSubsetOfPeers(ps, 2*sizeofSlice)
|
out := randomSubsetOfPeers(ps, 2*sizeofSlice)
|
||||||
if len(out) != len(ps) {
|
if len(out) != len(ps) {
|
||||||
|
@ -16,10 +16,11 @@ import (
|
|||||||
pin "github.com/ipfs/go-ipfs/pin"
|
pin "github.com/ipfs/go-ipfs/pin"
|
||||||
repo "github.com/ipfs/go-ipfs/repo"
|
repo "github.com/ipfs/go-ipfs/repo"
|
||||||
cfg "github.com/ipfs/go-ipfs/repo/config"
|
cfg "github.com/ipfs/go-ipfs/repo/config"
|
||||||
|
|
||||||
goprocessctx "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess/context"
|
goprocessctx "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess/context"
|
||||||
ci "gx/ipfs/QmUEUu1CM8bxBJxc3ZLojAi8evhTr4byQogWstABet79oY/go-libp2p-crypto"
|
ci "gx/ipfs/QmUEUu1CM8bxBJxc3ZLojAi8evhTr4byQogWstABet79oY/go-libp2p-crypto"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type BuildCfg struct {
|
type BuildCfg struct {
|
||||||
@ -105,7 +106,7 @@ func NewNode(ctx context.Context, cfg *BuildCfg) (*IpfsNode, error) {
|
|||||||
mode: offlineMode,
|
mode: offlineMode,
|
||||||
Repo: cfg.Repo,
|
Repo: cfg.Repo,
|
||||||
ctx: ctx,
|
ctx: ctx,
|
||||||
Peerstore: peer.NewPeerstore(),
|
Peerstore: pstore.NewPeerstore(),
|
||||||
}
|
}
|
||||||
if cfg.Online {
|
if cfg.Online {
|
||||||
n.mode = onlineMode
|
n.mode = onlineMode
|
||||||
|
@ -10,8 +10,8 @@ import (
|
|||||||
key "github.com/ipfs/go-ipfs/blocks/key"
|
key "github.com/ipfs/go-ipfs/blocks/key"
|
||||||
cmds "github.com/ipfs/go-ipfs/commands"
|
cmds "github.com/ipfs/go-ipfs/commands"
|
||||||
bitswap "github.com/ipfs/go-ipfs/exchange/bitswap"
|
bitswap "github.com/ipfs/go-ipfs/exchange/bitswap"
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var BitswapCmd = &cmds.Command{
|
var BitswapCmd = &cmds.Command{
|
||||||
|
@ -12,8 +12,9 @@ import (
|
|||||||
notif "github.com/ipfs/go-ipfs/notifications"
|
notif "github.com/ipfs/go-ipfs/notifications"
|
||||||
path "github.com/ipfs/go-ipfs/path"
|
path "github.com/ipfs/go-ipfs/path"
|
||||||
ipdht "github.com/ipfs/go-ipfs/routing/dht"
|
ipdht "github.com/ipfs/go-ipfs/routing/dht"
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var ErrNotDHT = errors.New("routing service is not a DHT")
|
var ErrNotDHT = errors.New("routing service is not a DHT")
|
||||||
@ -172,7 +173,7 @@ var findProvidersDhtCmd = &cmds.Command{
|
|||||||
np := p
|
np := p
|
||||||
notif.PublishQueryEvent(ctx, ¬if.QueryEvent{
|
notif.PublishQueryEvent(ctx, ¬if.QueryEvent{
|
||||||
Type: notif.Provider,
|
Type: notif.Provider,
|
||||||
Responses: []*peer.PeerInfo{&np},
|
Responses: []*pstore.PeerInfo{&np},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
@ -283,7 +284,7 @@ var findPeerDhtCmd = &cmds.Command{
|
|||||||
|
|
||||||
notif.PublishQueryEvent(ctx, ¬if.QueryEvent{
|
notif.PublishQueryEvent(ctx, ¬if.QueryEvent{
|
||||||
Type: notif.FinalPeer,
|
Type: notif.FinalPeer,
|
||||||
Responses: []*peer.PeerInfo{&pi},
|
Responses: []*pstore.PeerInfo{&pi},
|
||||||
})
|
})
|
||||||
}()
|
}()
|
||||||
},
|
},
|
||||||
|
@ -13,10 +13,12 @@ import (
|
|||||||
cmds "github.com/ipfs/go-ipfs/commands"
|
cmds "github.com/ipfs/go-ipfs/commands"
|
||||||
core "github.com/ipfs/go-ipfs/core"
|
core "github.com/ipfs/go-ipfs/core"
|
||||||
kb "github.com/ipfs/go-ipfs/routing/kbucket"
|
kb "github.com/ipfs/go-ipfs/routing/kbucket"
|
||||||
identify "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/protocol/identify"
|
|
||||||
|
"gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
|
identify "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/protocol/identify"
|
||||||
ic "gx/ipfs/QmUEUu1CM8bxBJxc3ZLojAi8evhTr4byQogWstABet79oY/go-libp2p-crypto"
|
ic "gx/ipfs/QmUEUu1CM8bxBJxc3ZLojAi8evhTr4byQogWstABet79oY/go-libp2p-crypto"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
||||||
"gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const offlineIdErrorMessage = `'ipfs id' currently cannot query information on remote
|
const offlineIdErrorMessage = `'ipfs id' currently cannot query information on remote
|
||||||
@ -147,7 +149,7 @@ EXAMPLE:
|
|||||||
Type: IdOutput{},
|
Type: IdOutput{},
|
||||||
}
|
}
|
||||||
|
|
||||||
func printPeer(ps peer.Peerstore, p peer.ID) (interface{}, error) {
|
func printPeer(ps pstore.Peerstore, p peer.ID) (interface{}, error) {
|
||||||
if p == "" {
|
if p == "" {
|
||||||
return nil, errors.New("Attempted to print nil peer!")
|
return nil, errors.New("Attempted to print nil peer!")
|
||||||
}
|
}
|
||||||
|
@ -10,8 +10,9 @@ import (
|
|||||||
|
|
||||||
cmds "github.com/ipfs/go-ipfs/commands"
|
cmds "github.com/ipfs/go-ipfs/commands"
|
||||||
core "github.com/ipfs/go-ipfs/core"
|
core "github.com/ipfs/go-ipfs/core"
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
|
|
||||||
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
|
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
@ -94,7 +95,7 @@ trip latency information.
|
|||||||
}
|
}
|
||||||
|
|
||||||
if addr != nil {
|
if addr != nil {
|
||||||
n.Peerstore.AddAddr(peerID, addr, peer.TempAddrTTL) // temporary
|
n.Peerstore.AddAddr(peerID, addr, pstore.TempAddrTTL) // temporary
|
||||||
}
|
}
|
||||||
|
|
||||||
numPings, _, err := req.Option("count").Int()
|
numPings, _, err := req.Option("count").Int()
|
||||||
@ -127,7 +128,7 @@ func pingPeer(ctx context.Context, n *core.IpfsNode, pid peer.ID, numPings int)
|
|||||||
outChan <- &PingResult{Text: fmt.Sprintf("Peer lookup error: %s", err)}
|
outChan <- &PingResult{Text: fmt.Sprintf("Peer lookup error: %s", err)}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
n.Peerstore.AddAddrs(p.ID, p.Addrs, peer.TempAddrTTL)
|
n.Peerstore.AddAddrs(p.ID, p.Addrs, pstore.TempAddrTTL)
|
||||||
}
|
}
|
||||||
|
|
||||||
outChan <- &PingResult{Text: fmt.Sprintf("PING %s.", pid.Pretty())}
|
outChan <- &PingResult{Text: fmt.Sprintf("PING %s.", pid.Pretty())}
|
||||||
|
@ -10,20 +10,20 @@ import (
|
|||||||
humanize "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/dustin/go-humanize"
|
humanize "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/dustin/go-humanize"
|
||||||
|
|
||||||
cmds "github.com/ipfs/go-ipfs/commands"
|
cmds "github.com/ipfs/go-ipfs/commands"
|
||||||
metrics "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/metrics"
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
protocol "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/protocol"
|
metrics "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/metrics"
|
||||||
|
protocol "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/protocol"
|
||||||
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var StatsCmd = &cmds.Command{
|
var StatsCmd = &cmds.Command{
|
||||||
Helptext: cmds.HelpText{
|
Helptext: cmds.HelpText{
|
||||||
Tagline: "Query ipfs statistics.",
|
Tagline: "Query ipfs statistics.",
|
||||||
Synopsis: "ipfs stats <command>",
|
Synopsis: "ipfs stats <command>",
|
||||||
ShortDescription: `'ipfs stats' is a set of commands to help look at statistics
|
ShortDescription: `'ipfs stats' is a set of commands to help look at statistics
|
||||||
for your ipfs node.
|
for your ipfs node.
|
||||||
`,
|
`,
|
||||||
LongDescription: `'ipfs stats' is a set of commands to help look at statistics
|
LongDescription: `'ipfs stats' is a set of commands to help look at statistics
|
||||||
for your ipfs node.`,
|
for your ipfs node.`,
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -34,7 +34,7 @@ for your ipfs node.`,
|
|||||||
|
|
||||||
var statBwCmd = &cmds.Command{
|
var statBwCmd = &cmds.Command{
|
||||||
Helptext: cmds.HelpText{
|
Helptext: cmds.HelpText{
|
||||||
Tagline: "Print ipfs bandwidth information.",
|
Tagline: "Print ipfs bandwidth information.",
|
||||||
Synopsis: `ipfs stats bw [--peer <peerId> | -p] [--proto <protocol> | -t] [--poll]
|
Synopsis: `ipfs stats bw [--peer <peerId> | -p] [--proto <protocol> | -t] [--poll]
|
||||||
[--interval <timeInterval> | -i]
|
[--interval <timeInterval> | -i]
|
||||||
`,
|
`,
|
||||||
|
@ -10,8 +10,8 @@ import (
|
|||||||
|
|
||||||
cmds "github.com/ipfs/go-ipfs/commands"
|
cmds "github.com/ipfs/go-ipfs/commands"
|
||||||
iaddr "github.com/ipfs/go-ipfs/thirdparty/ipfsaddr"
|
iaddr "github.com/ipfs/go-ipfs/thirdparty/ipfsaddr"
|
||||||
swarm "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net/swarm"
|
swarm "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net/swarm"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
|
|
||||||
mafilter "gx/ipfs/QmUaRHbB7pUwj5mS9BS4CMvBiW48MpaH2wbGxeWfFhhHxK/multiaddr-filter"
|
mafilter "gx/ipfs/QmUaRHbB7pUwj5mS9BS4CMvBiW48MpaH2wbGxeWfFhhHxK/multiaddr-filter"
|
||||||
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
|
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
|
||||||
@ -355,14 +355,14 @@ func parseAddresses(addrs []string) (iaddrs []iaddr.IPFSAddr, err error) {
|
|||||||
|
|
||||||
// peersWithAddresses is a function that takes in a slice of string peer addresses
|
// peersWithAddresses is a function that takes in a slice of string peer addresses
|
||||||
// (multiaddr + peerid) and returns a slice of properly constructed peers
|
// (multiaddr + peerid) and returns a slice of properly constructed peers
|
||||||
func peersWithAddresses(addrs []string) (pis []peer.PeerInfo, err error) {
|
func peersWithAddresses(addrs []string) (pis []pstore.PeerInfo, err error) {
|
||||||
iaddrs, err := parseAddresses(addrs)
|
iaddrs, err := parseAddresses(addrs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, iaddr := range iaddrs {
|
for _, iaddr := range iaddrs {
|
||||||
pis = append(pis, peer.PeerInfo{
|
pis = append(pis, pstore.PeerInfo{
|
||||||
ID: iaddr.ID(),
|
ID: iaddr.ID(),
|
||||||
Addrs: []ma.Multiaddr{iaddr.Transport()},
|
Addrs: []ma.Multiaddr{iaddr.Transport()},
|
||||||
})
|
})
|
||||||
|
31
core/core.go
31
core/core.go
@ -18,22 +18,23 @@ import (
|
|||||||
|
|
||||||
ds "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/ipfs/go-datastore"
|
ds "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/ipfs/go-datastore"
|
||||||
diag "github.com/ipfs/go-ipfs/diagnostics"
|
diag "github.com/ipfs/go-ipfs/diagnostics"
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
|
discovery "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/discovery"
|
||||||
|
p2phost "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/host"
|
||||||
|
p2pbhost "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/host/basic"
|
||||||
|
rhost "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/host/routed"
|
||||||
|
metrics "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/metrics"
|
||||||
|
swarm "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net/swarm"
|
||||||
|
addrutil "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net/swarm/addr"
|
||||||
|
ping "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/protocol/ping"
|
||||||
goprocess "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess"
|
goprocess "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess"
|
||||||
discovery "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/discovery"
|
|
||||||
p2phost "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/host"
|
|
||||||
p2pbhost "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/host/basic"
|
|
||||||
rhost "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/host/routed"
|
|
||||||
metrics "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/metrics"
|
|
||||||
swarm "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net/swarm"
|
|
||||||
addrutil "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net/swarm/addr"
|
|
||||||
ping "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/protocol/ping"
|
|
||||||
b58 "gx/ipfs/QmT8rehPR3F6bmwL6zjUN8XpiDBFFpMP2myPdC6ApsWfJf/go-base58"
|
b58 "gx/ipfs/QmT8rehPR3F6bmwL6zjUN8XpiDBFFpMP2myPdC6ApsWfJf/go-base58"
|
||||||
ic "gx/ipfs/QmUEUu1CM8bxBJxc3ZLojAi8evhTr4byQogWstABet79oY/go-libp2p-crypto"
|
ic "gx/ipfs/QmUEUu1CM8bxBJxc3ZLojAi8evhTr4byQogWstABet79oY/go-libp2p-crypto"
|
||||||
mamask "gx/ipfs/QmUaRHbB7pUwj5mS9BS4CMvBiW48MpaH2wbGxeWfFhhHxK/multiaddr-filter"
|
mamask "gx/ipfs/QmUaRHbB7pUwj5mS9BS4CMvBiW48MpaH2wbGxeWfFhhHxK/multiaddr-filter"
|
||||||
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
|
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
|
|
||||||
routing "github.com/ipfs/go-ipfs/routing"
|
routing "github.com/ipfs/go-ipfs/routing"
|
||||||
dht "github.com/ipfs/go-ipfs/routing/dht"
|
dht "github.com/ipfs/go-ipfs/routing/dht"
|
||||||
@ -91,7 +92,7 @@ type IpfsNode struct {
|
|||||||
PrivateKey ic.PrivKey // the local node's private Key
|
PrivateKey ic.PrivKey // the local node's private Key
|
||||||
|
|
||||||
// Services
|
// Services
|
||||||
Peerstore peer.Peerstore // storage for other Peer instances
|
Peerstore pstore.Peerstore // storage for other Peer instances
|
||||||
Blockstore bstore.GCBlockstore // the block store (lower level)
|
Blockstore bstore.GCBlockstore // the block store (lower level)
|
||||||
Blocks *bserv.BlockService // the block service, get/add blocks.
|
Blocks *bserv.BlockService // the block service, get/add blocks.
|
||||||
DAG merkledag.DAGService // the merkle dag service, get/add objects.
|
DAG merkledag.DAGService // the merkle dag service, get/add objects.
|
||||||
@ -196,7 +197,7 @@ func setupDiscoveryOption(d config.Discovery) DiscoveryOption {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *IpfsNode) HandlePeerFound(p peer.PeerInfo) {
|
func (n *IpfsNode) HandlePeerFound(p pstore.PeerInfo) {
|
||||||
log.Warning("trying peer info: ", p)
|
log.Warning("trying peer info: ", p)
|
||||||
ctx, cancel := context.WithTimeout(n.Context(), discoveryConnTimeout)
|
ctx, cancel := context.WithTimeout(n.Context(), discoveryConnTimeout)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
@ -396,7 +397,7 @@ func (n *IpfsNode) Bootstrap(cfg BootstrapConfig) error {
|
|||||||
// if the caller did not specify a bootstrap peer function, get the
|
// if the caller did not specify a bootstrap peer function, get the
|
||||||
// freshest bootstrap peers from config. this responds to live changes.
|
// freshest bootstrap peers from config. this responds to live changes.
|
||||||
if cfg.BootstrapPeers == nil {
|
if cfg.BootstrapPeers == nil {
|
||||||
cfg.BootstrapPeers = func() []peer.PeerInfo {
|
cfg.BootstrapPeers = func() []pstore.PeerInfo {
|
||||||
ps, err := n.loadBootstrapPeers()
|
ps, err := n.loadBootstrapPeers()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Warning("failed to parse bootstrap peers from config")
|
log.Warning("failed to parse bootstrap peers from config")
|
||||||
@ -458,7 +459,7 @@ func (n *IpfsNode) LoadPrivateKey() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *IpfsNode) loadBootstrapPeers() ([]peer.PeerInfo, error) {
|
func (n *IpfsNode) loadBootstrapPeers() ([]pstore.PeerInfo, error) {
|
||||||
cfg, err := n.Repo.Config()
|
cfg, err := n.Repo.Config()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -562,12 +563,12 @@ func listenAddresses(cfg *config.Config) ([]ma.Multiaddr, error) {
|
|||||||
return listen, nil
|
return listen, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type HostOption func(ctx context.Context, id peer.ID, ps peer.Peerstore, bwr metrics.Reporter, fs []*net.IPNet) (p2phost.Host, error)
|
type HostOption func(ctx context.Context, id peer.ID, ps pstore.Peerstore, bwr metrics.Reporter, fs []*net.IPNet) (p2phost.Host, error)
|
||||||
|
|
||||||
var DefaultHostOption HostOption = constructPeerHost
|
var DefaultHostOption HostOption = constructPeerHost
|
||||||
|
|
||||||
// isolates the complex initialization steps
|
// isolates the complex initialization steps
|
||||||
func constructPeerHost(ctx context.Context, id peer.ID, ps peer.Peerstore, bwr metrics.Reporter, fs []*net.IPNet) (p2phost.Host, error) {
|
func constructPeerHost(ctx context.Context, id peer.ID, ps pstore.Peerstore, bwr metrics.Reporter, fs []*net.IPNet) (p2phost.Host, error) {
|
||||||
|
|
||||||
// no addresses to begin with. we'll start later.
|
// no addresses to begin with. we'll start later.
|
||||||
network, err := swarm.NewNetwork(ctx, nil, id, ps, bwr)
|
network, err := swarm.NewNetwork(ctx, nil, id, ps, bwr)
|
||||||
|
@ -8,7 +8,7 @@ import (
|
|||||||
|
|
||||||
core "github.com/ipfs/go-ipfs/core"
|
core "github.com/ipfs/go-ipfs/core"
|
||||||
config "github.com/ipfs/go-ipfs/repo/config"
|
config "github.com/ipfs/go-ipfs/repo/config"
|
||||||
id "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/protocol/identify"
|
id "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/protocol/identify"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Gateway should be instantiated using NewGateway
|
// Gateway should be instantiated using NewGateway
|
||||||
|
@ -16,7 +16,7 @@ import (
|
|||||||
repo "github.com/ipfs/go-ipfs/repo"
|
repo "github.com/ipfs/go-ipfs/repo"
|
||||||
config "github.com/ipfs/go-ipfs/repo/config"
|
config "github.com/ipfs/go-ipfs/repo/config"
|
||||||
testutil "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
testutil "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
||||||
id "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/protocol/identify"
|
id "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/protocol/identify"
|
||||||
ci "gx/ipfs/QmUEUu1CM8bxBJxc3ZLojAi8evhTr4byQogWstABet79oY/go-libp2p-crypto"
|
ci "gx/ipfs/QmUEUu1CM8bxBJxc3ZLojAi8evhTr4byQogWstABet79oY/go-libp2p-crypto"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
)
|
)
|
||||||
|
@ -5,9 +5,9 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
core "github.com/ipfs/go-ipfs/core"
|
core "github.com/ipfs/go-ipfs/core"
|
||||||
bhost "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/host/basic"
|
bhost "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/host/basic"
|
||||||
inet "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net"
|
inet "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net"
|
||||||
testutil "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/test/util"
|
testutil "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/test/util"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -4,10 +4,11 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
core "github.com/ipfs/go-ipfs/core"
|
core "github.com/ipfs/go-ipfs/core"
|
||||||
net "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net"
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
pro "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/protocol"
|
net "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net"
|
||||||
|
pro "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/protocol"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type ipfsListener struct {
|
type ipfsListener struct {
|
||||||
@ -56,7 +57,7 @@ func Listen(nd *core.IpfsNode, protocol string) (*ipfsListener, error) {
|
|||||||
func Dial(nd *core.IpfsNode, p peer.ID, protocol string) (net.Stream, error) {
|
func Dial(nd *core.IpfsNode, p peer.ID, protocol string) (net.Stream, error) {
|
||||||
ctx, cancel := context.WithTimeout(nd.Context(), time.Second*30)
|
ctx, cancel := context.WithTimeout(nd.Context(), time.Second*30)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
err := nd.PeerHost.Connect(ctx, peer.PeerInfo{ID: p})
|
err := nd.PeerHost.Connect(ctx, pstore.PeerInfo{ID: p})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -9,9 +9,9 @@ import (
|
|||||||
routing "github.com/ipfs/go-ipfs/routing"
|
routing "github.com/ipfs/go-ipfs/routing"
|
||||||
supernode "github.com/ipfs/go-ipfs/routing/supernode"
|
supernode "github.com/ipfs/go-ipfs/routing/supernode"
|
||||||
gcproxy "github.com/ipfs/go-ipfs/routing/supernode/proxy"
|
gcproxy "github.com/ipfs/go-ipfs/routing/supernode/proxy"
|
||||||
"gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/host"
|
"gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/host"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
"gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// NB: DHT option is included in the core to avoid 1) because it's a sane
|
// NB: DHT option is included in the core to avoid 1) because it's a sane
|
||||||
@ -44,7 +44,7 @@ func SupernodeServer(recordSource ds.Datastore) core.RoutingOption {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO doc
|
// TODO doc
|
||||||
func SupernodeClient(remotes ...peer.PeerInfo) core.RoutingOption {
|
func SupernodeClient(remotes ...pstore.PeerInfo) core.RoutingOption {
|
||||||
return func(ctx context.Context, ph host.Host, dstore repo.Datastore) (routing.IpfsRouting, error) {
|
return func(ctx context.Context, ph host.Host, dstore repo.Datastore) (routing.IpfsRouting, error) {
|
||||||
if len(remotes) < 1 {
|
if len(remotes) < 1 {
|
||||||
return nil, errServersMissing
|
return nil, errServersMissing
|
||||||
|
@ -13,10 +13,11 @@ import (
|
|||||||
config "github.com/ipfs/go-ipfs/repo/config"
|
config "github.com/ipfs/go-ipfs/repo/config"
|
||||||
ds2 "github.com/ipfs/go-ipfs/thirdparty/datastore2"
|
ds2 "github.com/ipfs/go-ipfs/thirdparty/datastore2"
|
||||||
testutil "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
testutil "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
||||||
host "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/host"
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
metrics "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/metrics"
|
host "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/host"
|
||||||
mocknet "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net/mock"
|
metrics "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/metrics"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
mocknet "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net/mock"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewMockNode constructs an IpfsNode for use in tests.
|
// NewMockNode constructs an IpfsNode for use in tests.
|
||||||
@ -31,7 +32,7 @@ func NewMockNode() (*core.IpfsNode, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func MockHostOption(mn mocknet.Mocknet) core.HostOption {
|
func MockHostOption(mn mocknet.Mocknet) core.HostOption {
|
||||||
return func(ctx context.Context, id peer.ID, ps peer.Peerstore, bwr metrics.Reporter, fs []*net.IPNet) (host.Host, error) {
|
return func(ctx context.Context, id peer.ID, ps pstore.Peerstore, bwr metrics.Reporter, fs []*net.IPNet) (host.Host, error) {
|
||||||
return mn.AddPeerWithPeerstore(id, ps)
|
return mn.AddPeerWithPeerstore(id, ps)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,15 +12,15 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
pb "github.com/ipfs/go-ipfs/diagnostics/pb"
|
pb "github.com/ipfs/go-ipfs/diagnostics/pb"
|
||||||
host "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/host"
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
inet "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net"
|
host "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/host"
|
||||||
protocol "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/protocol"
|
inet "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net"
|
||||||
|
protocol "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/protocol"
|
||||||
ctxio "gx/ipfs/QmX6DhWrpBB5NtadXmPSXYNdVvuLfJXoFNMvUMoVvP5UJa/go-context/io"
|
ctxio "gx/ipfs/QmX6DhWrpBB5NtadXmPSXYNdVvuLfJXoFNMvUMoVvP5UJa/go-context/io"
|
||||||
ggio "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/io"
|
ggio "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/io"
|
||||||
proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto"
|
proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var log = logging.Logger("diagnostics")
|
var log = logging.Logger("diagnostics")
|
||||||
|
@ -6,7 +6,7 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
|
|
||||||
rtable "github.com/ipfs/go-ipfs/routing/kbucket"
|
rtable "github.com/ipfs/go-ipfs/routing/kbucket"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
)
|
)
|
||||||
|
|
||||||
type node struct {
|
type node struct {
|
||||||
|
@ -8,11 +8,11 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
process "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess"
|
process "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess"
|
||||||
procctx "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess/context"
|
procctx "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess/context"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
|
|
||||||
blocks "github.com/ipfs/go-ipfs/blocks"
|
blocks "github.com/ipfs/go-ipfs/blocks"
|
||||||
blockstore "github.com/ipfs/go-ipfs/blocks/blockstore"
|
blockstore "github.com/ipfs/go-ipfs/blocks/blockstore"
|
||||||
|
@ -17,7 +17,7 @@ import (
|
|||||||
tn "github.com/ipfs/go-ipfs/exchange/bitswap/testnet"
|
tn "github.com/ipfs/go-ipfs/exchange/bitswap/testnet"
|
||||||
mockrouting "github.com/ipfs/go-ipfs/routing/mock"
|
mockrouting "github.com/ipfs/go-ipfs/routing/mock"
|
||||||
delay "github.com/ipfs/go-ipfs/thirdparty/delay"
|
delay "github.com/ipfs/go-ipfs/thirdparty/delay"
|
||||||
p2ptestutil "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/test/util"
|
p2ptestutil "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/test/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
// FIXME the tests are really sensitive to the network delay. fix them to work
|
// FIXME the tests are really sensitive to the network delay. fix them to work
|
||||||
|
@ -7,7 +7,7 @@ import (
|
|||||||
key "github.com/ipfs/go-ipfs/blocks/key"
|
key "github.com/ipfs/go-ipfs/blocks/key"
|
||||||
"github.com/ipfs/go-ipfs/exchange/bitswap/wantlist"
|
"github.com/ipfs/go-ipfs/exchange/bitswap/wantlist"
|
||||||
"github.com/ipfs/go-ipfs/thirdparty/testutil"
|
"github.com/ipfs/go-ipfs/thirdparty/testutil"
|
||||||
"gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
"gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
)
|
)
|
||||||
|
|
||||||
// FWIW: At the time of this commit, including a timestamp in task increases
|
// FWIW: At the time of this commit, including a timestamp in task increases
|
||||||
|
@ -8,9 +8,9 @@ import (
|
|||||||
bstore "github.com/ipfs/go-ipfs/blocks/blockstore"
|
bstore "github.com/ipfs/go-ipfs/blocks/blockstore"
|
||||||
bsmsg "github.com/ipfs/go-ipfs/exchange/bitswap/message"
|
bsmsg "github.com/ipfs/go-ipfs/exchange/bitswap/message"
|
||||||
wl "github.com/ipfs/go-ipfs/exchange/bitswap/wantlist"
|
wl "github.com/ipfs/go-ipfs/exchange/bitswap/wantlist"
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// TODO consider taking responsibility for other types of requests. For
|
// TODO consider taking responsibility for other types of requests. For
|
||||||
|
@ -14,8 +14,8 @@ import (
|
|||||||
blockstore "github.com/ipfs/go-ipfs/blocks/blockstore"
|
blockstore "github.com/ipfs/go-ipfs/blocks/blockstore"
|
||||||
message "github.com/ipfs/go-ipfs/exchange/bitswap/message"
|
message "github.com/ipfs/go-ipfs/exchange/bitswap/message"
|
||||||
testutil "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
testutil "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type peerAndEngine struct {
|
type peerAndEngine struct {
|
||||||
|
@ -5,7 +5,7 @@ import (
|
|||||||
|
|
||||||
key "github.com/ipfs/go-ipfs/blocks/key"
|
key "github.com/ipfs/go-ipfs/blocks/key"
|
||||||
wl "github.com/ipfs/go-ipfs/exchange/bitswap/wantlist"
|
wl "github.com/ipfs/go-ipfs/exchange/bitswap/wantlist"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
)
|
)
|
||||||
|
|
||||||
// keySet is just a convenient alias for maps of keys, where we only care
|
// keySet is just a convenient alias for maps of keys, where we only care
|
||||||
|
@ -7,7 +7,7 @@ import (
|
|||||||
key "github.com/ipfs/go-ipfs/blocks/key"
|
key "github.com/ipfs/go-ipfs/blocks/key"
|
||||||
wantlist "github.com/ipfs/go-ipfs/exchange/bitswap/wantlist"
|
wantlist "github.com/ipfs/go-ipfs/exchange/bitswap/wantlist"
|
||||||
pq "github.com/ipfs/go-ipfs/thirdparty/pq"
|
pq "github.com/ipfs/go-ipfs/thirdparty/pq"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
)
|
)
|
||||||
|
|
||||||
type peerRequestQueue interface {
|
type peerRequestQueue interface {
|
||||||
|
@ -7,7 +7,7 @@ import (
|
|||||||
key "github.com/ipfs/go-ipfs/blocks/key"
|
key "github.com/ipfs/go-ipfs/blocks/key"
|
||||||
pb "github.com/ipfs/go-ipfs/exchange/bitswap/message/pb"
|
pb "github.com/ipfs/go-ipfs/exchange/bitswap/message/pb"
|
||||||
wantlist "github.com/ipfs/go-ipfs/exchange/bitswap/wantlist"
|
wantlist "github.com/ipfs/go-ipfs/exchange/bitswap/wantlist"
|
||||||
inet "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net"
|
inet "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net"
|
||||||
|
|
||||||
ggio "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/io"
|
ggio "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/io"
|
||||||
proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto"
|
proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto"
|
||||||
|
@ -3,9 +3,9 @@ package network
|
|||||||
import (
|
import (
|
||||||
key "github.com/ipfs/go-ipfs/blocks/key"
|
key "github.com/ipfs/go-ipfs/blocks/key"
|
||||||
bsmsg "github.com/ipfs/go-ipfs/exchange/bitswap/message"
|
bsmsg "github.com/ipfs/go-ipfs/exchange/bitswap/message"
|
||||||
protocol "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/protocol"
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
|
protocol "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/protocol"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var ProtocolBitswap protocol.ID = "/ipfs/bitswap"
|
var ProtocolBitswap protocol.ID = "/ipfs/bitswap"
|
||||||
|
@ -6,13 +6,15 @@ import (
|
|||||||
key "github.com/ipfs/go-ipfs/blocks/key"
|
key "github.com/ipfs/go-ipfs/blocks/key"
|
||||||
bsmsg "github.com/ipfs/go-ipfs/exchange/bitswap/message"
|
bsmsg "github.com/ipfs/go-ipfs/exchange/bitswap/message"
|
||||||
routing "github.com/ipfs/go-ipfs/routing"
|
routing "github.com/ipfs/go-ipfs/routing"
|
||||||
host "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/host"
|
|
||||||
inet "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net"
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
|
host "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/host"
|
||||||
|
inet "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net"
|
||||||
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
|
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
|
||||||
ggio "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/io"
|
ggio "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/io"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var log = logging.Logger("bitswap_network")
|
var log = logging.Logger("bitswap_network")
|
||||||
@ -45,7 +47,7 @@ func (bsnet *impl) newStreamToPeer(ctx context.Context, p peer.ID) (inet.Stream,
|
|||||||
// first, make sure we're connected.
|
// first, make sure we're connected.
|
||||||
// if this fails, we cannot connect to given peer.
|
// if this fails, we cannot connect to given peer.
|
||||||
//TODO(jbenet) move this into host.NewStream?
|
//TODO(jbenet) move this into host.NewStream?
|
||||||
if err := bsnet.host.Connect(ctx, peer.PeerInfo{ID: p}); err != nil {
|
if err := bsnet.host.Connect(ctx, pstore.PeerInfo{ID: p}); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -101,7 +103,7 @@ func (bsnet *impl) SetDelegate(r Receiver) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (bsnet *impl) ConnectTo(ctx context.Context, p peer.ID) error {
|
func (bsnet *impl) ConnectTo(ctx context.Context, p peer.ID) error {
|
||||||
return bsnet.host.Connect(ctx, peer.PeerInfo{ID: p})
|
return bsnet.host.Connect(ctx, pstore.PeerInfo{ID: p})
|
||||||
}
|
}
|
||||||
|
|
||||||
// FindProvidersAsync returns a channel of providers for the given key
|
// FindProvidersAsync returns a channel of providers for the given key
|
||||||
@ -129,7 +131,7 @@ func (bsnet *impl) FindProvidersAsync(ctx context.Context, k key.Key, max int) <
|
|||||||
if info.ID == bsnet.host.ID() {
|
if info.ID == bsnet.host.ID() {
|
||||||
continue // ignore self as provider
|
continue // ignore self as provider
|
||||||
}
|
}
|
||||||
bsnet.host.Peerstore().AddAddrs(info.ID, info.Addrs, peer.TempAddrTTL)
|
bsnet.host.Peerstore().AddAddrs(info.ID, info.Addrs, pstore.TempAddrTTL)
|
||||||
select {
|
select {
|
||||||
case <-ctx.Done():
|
case <-ctx.Done():
|
||||||
return
|
return
|
||||||
|
@ -3,7 +3,7 @@ package bitswap
|
|||||||
import (
|
import (
|
||||||
bsnet "github.com/ipfs/go-ipfs/exchange/bitswap/network"
|
bsnet "github.com/ipfs/go-ipfs/exchange/bitswap/network"
|
||||||
"github.com/ipfs/go-ipfs/thirdparty/testutil"
|
"github.com/ipfs/go-ipfs/thirdparty/testutil"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Network interface {
|
type Network interface {
|
||||||
|
@ -10,8 +10,8 @@ import (
|
|||||||
mockrouting "github.com/ipfs/go-ipfs/routing/mock"
|
mockrouting "github.com/ipfs/go-ipfs/routing/mock"
|
||||||
delay "github.com/ipfs/go-ipfs/thirdparty/delay"
|
delay "github.com/ipfs/go-ipfs/thirdparty/delay"
|
||||||
testutil "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
testutil "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestSendMessageAsyncButWaitForResponse(t *testing.T) {
|
func TestSendMessageAsyncButWaitForResponse(t *testing.T) {
|
||||||
|
@ -5,9 +5,9 @@ import (
|
|||||||
bsnet "github.com/ipfs/go-ipfs/exchange/bitswap/network"
|
bsnet "github.com/ipfs/go-ipfs/exchange/bitswap/network"
|
||||||
mockrouting "github.com/ipfs/go-ipfs/routing/mock"
|
mockrouting "github.com/ipfs/go-ipfs/routing/mock"
|
||||||
testutil "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
testutil "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
||||||
mockpeernet "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net/mock"
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
|
mockpeernet "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net/mock"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type peernet struct {
|
type peernet struct {
|
||||||
|
@ -10,8 +10,8 @@ import (
|
|||||||
mockrouting "github.com/ipfs/go-ipfs/routing/mock"
|
mockrouting "github.com/ipfs/go-ipfs/routing/mock"
|
||||||
delay "github.com/ipfs/go-ipfs/thirdparty/delay"
|
delay "github.com/ipfs/go-ipfs/thirdparty/delay"
|
||||||
testutil "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
testutil "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func VirtualNetwork(rs mockrouting.Server, d delay.D) Network {
|
func VirtualNetwork(rs mockrouting.Server, d delay.D) Network {
|
||||||
|
@ -10,9 +10,9 @@ import (
|
|||||||
datastore2 "github.com/ipfs/go-ipfs/thirdparty/datastore2"
|
datastore2 "github.com/ipfs/go-ipfs/thirdparty/datastore2"
|
||||||
delay "github.com/ipfs/go-ipfs/thirdparty/delay"
|
delay "github.com/ipfs/go-ipfs/thirdparty/delay"
|
||||||
testutil "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
testutil "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
||||||
p2ptestutil "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/test/util"
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
|
p2ptestutil "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/test/util"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// WARNING: this uses RandTestBogusIdentity DO NOT USE for NON TESTS!
|
// WARNING: this uses RandTestBogusIdentity DO NOT USE for NON TESTS!
|
||||||
|
@ -9,8 +9,8 @@ import (
|
|||||||
bsmsg "github.com/ipfs/go-ipfs/exchange/bitswap/message"
|
bsmsg "github.com/ipfs/go-ipfs/exchange/bitswap/message"
|
||||||
bsnet "github.com/ipfs/go-ipfs/exchange/bitswap/network"
|
bsnet "github.com/ipfs/go-ipfs/exchange/bitswap/network"
|
||||||
wantlist "github.com/ipfs/go-ipfs/exchange/bitswap/wantlist"
|
wantlist "github.com/ipfs/go-ipfs/exchange/bitswap/wantlist"
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type WantManager struct {
|
type WantManager struct {
|
||||||
|
@ -10,8 +10,8 @@ import (
|
|||||||
|
|
||||||
key "github.com/ipfs/go-ipfs/blocks/key"
|
key "github.com/ipfs/go-ipfs/blocks/key"
|
||||||
wantlist "github.com/ipfs/go-ipfs/exchange/bitswap/wantlist"
|
wantlist "github.com/ipfs/go-ipfs/exchange/bitswap/wantlist"
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var TaskWorkerCount = 8
|
var TaskWorkerCount = 8
|
||||||
|
@ -19,9 +19,9 @@ import (
|
|||||||
dhtpb "github.com/ipfs/go-ipfs/routing/dht/pb"
|
dhtpb "github.com/ipfs/go-ipfs/routing/dht/pb"
|
||||||
record "github.com/ipfs/go-ipfs/routing/record"
|
record "github.com/ipfs/go-ipfs/routing/record"
|
||||||
ft "github.com/ipfs/go-ipfs/unixfs"
|
ft "github.com/ipfs/go-ipfs/unixfs"
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
ci "gx/ipfs/QmUEUu1CM8bxBJxc3ZLojAi8evhTr4byQogWstABet79oY/go-libp2p-crypto"
|
ci "gx/ipfs/QmUEUu1CM8bxBJxc3ZLojAi8evhTr4byQogWstABet79oY/go-libp2p-crypto"
|
||||||
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// ErrExpiredRecord should be returned when an ipns record is
|
// ErrExpiredRecord should be returned when an ipns record is
|
||||||
|
@ -11,12 +11,13 @@ import (
|
|||||||
path "github.com/ipfs/go-ipfs/path"
|
path "github.com/ipfs/go-ipfs/path"
|
||||||
"github.com/ipfs/go-ipfs/routing"
|
"github.com/ipfs/go-ipfs/routing"
|
||||||
dhtpb "github.com/ipfs/go-ipfs/routing/dht/pb"
|
dhtpb "github.com/ipfs/go-ipfs/routing/dht/pb"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
|
|
||||||
ds "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/ipfs/go-datastore"
|
ds "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/ipfs/go-datastore"
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
goprocess "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess"
|
goprocess "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess"
|
||||||
gpctx "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess/context"
|
gpctx "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess/context"
|
||||||
proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto"
|
proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
||||||
)
|
)
|
||||||
@ -32,7 +33,7 @@ const DefaultRecordLifetime = time.Hour * 24
|
|||||||
type Republisher struct {
|
type Republisher struct {
|
||||||
r routing.IpfsRouting
|
r routing.IpfsRouting
|
||||||
ds ds.Datastore
|
ds ds.Datastore
|
||||||
ps peer.Peerstore
|
ps pstore.Peerstore
|
||||||
|
|
||||||
Interval time.Duration
|
Interval time.Duration
|
||||||
|
|
||||||
@ -43,7 +44,7 @@ type Republisher struct {
|
|||||||
entries map[peer.ID]struct{}
|
entries map[peer.ID]struct{}
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRepublisher(r routing.IpfsRouting, ds ds.Datastore, ps peer.Peerstore) *Republisher {
|
func NewRepublisher(r routing.IpfsRouting, ds ds.Datastore, ps pstore.Peerstore) *Republisher {
|
||||||
return &Republisher{
|
return &Republisher{
|
||||||
r: r,
|
r: r,
|
||||||
ps: ps,
|
ps: ps,
|
||||||
|
@ -13,8 +13,8 @@ import (
|
|||||||
namesys "github.com/ipfs/go-ipfs/namesys"
|
namesys "github.com/ipfs/go-ipfs/namesys"
|
||||||
. "github.com/ipfs/go-ipfs/namesys/republisher"
|
. "github.com/ipfs/go-ipfs/namesys/republisher"
|
||||||
path "github.com/ipfs/go-ipfs/path"
|
path "github.com/ipfs/go-ipfs/path"
|
||||||
mocknet "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net/mock"
|
mocknet "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net/mock"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestRepublish(t *testing.T) {
|
func TestRepublish(t *testing.T) {
|
||||||
@ -44,7 +44,7 @@ func TestRepublish(t *testing.T) {
|
|||||||
mn.LinkAll()
|
mn.LinkAll()
|
||||||
|
|
||||||
bsinf := core.BootstrapConfigWithPeers(
|
bsinf := core.BootstrapConfigWithPeers(
|
||||||
[]peer.PeerInfo{
|
[]pstore.PeerInfo{
|
||||||
nodes[0].Peerstore.PeerInfo(nodes[0].Identity),
|
nodes[0].Peerstore.PeerInfo(nodes[0].Identity),
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
@ -11,9 +11,9 @@ import (
|
|||||||
path "github.com/ipfs/go-ipfs/path"
|
path "github.com/ipfs/go-ipfs/path"
|
||||||
mockrouting "github.com/ipfs/go-ipfs/routing/mock"
|
mockrouting "github.com/ipfs/go-ipfs/routing/mock"
|
||||||
testutil "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
testutil "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestRoutingResolve(t *testing.T) {
|
func TestRoutingResolve(t *testing.T) {
|
||||||
|
@ -3,8 +3,9 @@ package notifications
|
|||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const RoutingQueryKey = "RoutingQueryEvent"
|
const RoutingQueryKey = "RoutingQueryEvent"
|
||||||
@ -25,7 +26,7 @@ const (
|
|||||||
type QueryEvent struct {
|
type QueryEvent struct {
|
||||||
ID peer.ID
|
ID peer.ID
|
||||||
Type QueryEventType
|
Type QueryEventType
|
||||||
Responses []*peer.PeerInfo
|
Responses []*pstore.PeerInfo
|
||||||
Extra string
|
Extra string
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -63,7 +64,7 @@ func (qe *QueryEvent) UnmarshalJSON(b []byte) error {
|
|||||||
temp := struct {
|
temp := struct {
|
||||||
ID string
|
ID string
|
||||||
Type int
|
Type int
|
||||||
Responses []*peer.PeerInfo
|
Responses []*pstore.PeerInfo
|
||||||
Extra string
|
Extra string
|
||||||
}{}
|
}{}
|
||||||
err := json.Unmarshal(b, &temp)
|
err := json.Unmarshal(b, &temp)
|
||||||
|
14
package.json
14
package.json
@ -13,15 +13,15 @@
|
|||||||
"version": "1.1.0"
|
"version": "1.1.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"hash": "QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq",
|
"hash": "QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki",
|
||||||
"name": "go-libp2p",
|
"name": "go-libp2p",
|
||||||
"version": "3.2.3"
|
"version": "3.3.1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"author": "whyrusleeping",
|
"author": "whyrusleeping",
|
||||||
"hash": "QmbuSYB51KtX8izgab1fSyBgsyMH2hTuCfBtXm77PeXWca",
|
"hash": "QmUmvxT1NTXjk4v9ucPHgC5NHd7s2nHXrVvFbs68NrGuZC",
|
||||||
"name": "go-libp2p-secio",
|
"name": "go-libp2p-secio",
|
||||||
"version": "1.0.4"
|
"version": "1.0.6"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"author": "whyrusleeping",
|
"author": "whyrusleeping",
|
||||||
@ -31,9 +31,9 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"author": "whyrusleeping",
|
"author": "whyrusleeping",
|
||||||
"hash": "QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4",
|
"hash": "QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC",
|
||||||
"name": "go-libp2p-peer",
|
"name": "go-libp2p-peer",
|
||||||
"version": "1.0.6"
|
"version": "2.0.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"hash": "QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt",
|
"hash": "QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt",
|
||||||
@ -118,4 +118,4 @@
|
|||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"name": "go-ipfs",
|
"name": "go-ipfs",
|
||||||
"version": "0.4.0"
|
"version": "0.4.0"
|
||||||
}
|
}
|
||||||
|
18
pin/pin.go
18
pin/pin.go
@ -45,11 +45,11 @@ const (
|
|||||||
func PinModeToString(mode PinMode) (string, bool) {
|
func PinModeToString(mode PinMode) (string, bool) {
|
||||||
m := map[PinMode]string{
|
m := map[PinMode]string{
|
||||||
Recursive: linkRecursive,
|
Recursive: linkRecursive,
|
||||||
Direct: linkDirect,
|
Direct: linkDirect,
|
||||||
Indirect: linkIndirect,
|
Indirect: linkIndirect,
|
||||||
Internal: linkInternal,
|
Internal: linkInternal,
|
||||||
NotPinned: linkNotPinned,
|
NotPinned: linkNotPinned,
|
||||||
Any: linkAny,
|
Any: linkAny,
|
||||||
}
|
}
|
||||||
s, ok := m[mode]
|
s, ok := m[mode]
|
||||||
return s, ok
|
return s, ok
|
||||||
@ -58,12 +58,12 @@ func PinModeToString(mode PinMode) (string, bool) {
|
|||||||
func StringToPinMode(s string) (PinMode, bool) {
|
func StringToPinMode(s string) (PinMode, bool) {
|
||||||
m := map[string]PinMode{
|
m := map[string]PinMode{
|
||||||
linkRecursive: Recursive,
|
linkRecursive: Recursive,
|
||||||
linkDirect: Direct,
|
linkDirect: Direct,
|
||||||
linkIndirect: Indirect,
|
linkIndirect: Indirect,
|
||||||
linkInternal: Internal,
|
linkInternal: Internal,
|
||||||
linkNotPinned: NotPinned,
|
linkNotPinned: NotPinned,
|
||||||
linkAny: Any,
|
linkAny: Any,
|
||||||
linkAll: Any, // "all" and "any" means the same thing
|
linkAll: Any, // "all" and "any" means the same thing
|
||||||
}
|
}
|
||||||
mode, ok := m[s]
|
mode, ok := m[s]
|
||||||
return mode, ok
|
return mode, ok
|
||||||
|
@ -6,8 +6,8 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
ci "gx/ipfs/QmUEUu1CM8bxBJxc3ZLojAi8evhTr4byQogWstABet79oY/go-libp2p-crypto"
|
ci "gx/ipfs/QmUEUu1CM8bxBJxc3ZLojAi8evhTr4byQogWstABet79oY/go-libp2p-crypto"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func Init(out io.Writer, nBitsForKeypair int) (*Config, error) {
|
func Init(out io.Writer, nBitsForKeypair int) (*Config, error) {
|
||||||
|
@ -14,17 +14,18 @@ import (
|
|||||||
pb "github.com/ipfs/go-ipfs/routing/dht/pb"
|
pb "github.com/ipfs/go-ipfs/routing/dht/pb"
|
||||||
kb "github.com/ipfs/go-ipfs/routing/kbucket"
|
kb "github.com/ipfs/go-ipfs/routing/kbucket"
|
||||||
record "github.com/ipfs/go-ipfs/routing/record"
|
record "github.com/ipfs/go-ipfs/routing/record"
|
||||||
host "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/host"
|
|
||||||
protocol "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/protocol"
|
|
||||||
ci "gx/ipfs/QmUEUu1CM8bxBJxc3ZLojAi8evhTr4byQogWstABet79oY/go-libp2p-crypto"
|
|
||||||
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
|
|
||||||
ds "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/ipfs/go-datastore"
|
ds "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/ipfs/go-datastore"
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
|
host "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/host"
|
||||||
|
protocol "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/protocol"
|
||||||
goprocess "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess"
|
goprocess "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess"
|
||||||
goprocessctx "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess/context"
|
goprocessctx "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess/context"
|
||||||
|
ci "gx/ipfs/QmUEUu1CM8bxBJxc3ZLojAi8evhTr4byQogWstABet79oY/go-libp2p-crypto"
|
||||||
proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto"
|
proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
|
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
||||||
)
|
)
|
||||||
|
|
||||||
var log = logging.Logger("dht")
|
var log = logging.Logger("dht")
|
||||||
@ -40,9 +41,9 @@ const NumBootstrapQueries = 5
|
|||||||
// IpfsDHT is an implementation of Kademlia with Coral and S/Kademlia modifications.
|
// IpfsDHT is an implementation of Kademlia with Coral and S/Kademlia modifications.
|
||||||
// It is used to implement the base IpfsRouting module.
|
// It is used to implement the base IpfsRouting module.
|
||||||
type IpfsDHT struct {
|
type IpfsDHT struct {
|
||||||
host host.Host // the network services we need
|
host host.Host // the network services we need
|
||||||
self peer.ID // Local peer (yourself)
|
self peer.ID // Local peer (yourself)
|
||||||
peerstore peer.Peerstore // Peer Registry
|
peerstore pstore.Peerstore // Peer Registry
|
||||||
|
|
||||||
datastore ds.Datastore // Local data
|
datastore ds.Datastore // Local data
|
||||||
|
|
||||||
@ -127,7 +128,7 @@ func (dht *IpfsDHT) putValueToPeer(ctx context.Context, p peer.ID,
|
|||||||
func (dht *IpfsDHT) putProvider(ctx context.Context, p peer.ID, skey string) error {
|
func (dht *IpfsDHT) putProvider(ctx context.Context, p peer.ID, skey string) error {
|
||||||
|
|
||||||
// add self as the provider
|
// add self as the provider
|
||||||
pi := peer.PeerInfo{
|
pi := pstore.PeerInfo{
|
||||||
ID: dht.self,
|
ID: dht.self,
|
||||||
Addrs: dht.host.Addrs(),
|
Addrs: dht.host.Addrs(),
|
||||||
}
|
}
|
||||||
@ -140,7 +141,7 @@ func (dht *IpfsDHT) putProvider(ctx context.Context, p peer.ID, skey string) err
|
|||||||
}
|
}
|
||||||
|
|
||||||
pmes := pb.NewMessage(pb.Message_ADD_PROVIDER, skey, 0)
|
pmes := pb.NewMessage(pb.Message_ADD_PROVIDER, skey, 0)
|
||||||
pmes.ProviderPeers = pb.RawPeerInfosToPBPeers([]peer.PeerInfo{pi})
|
pmes.ProviderPeers = pb.RawPeerInfosToPBPeers([]pstore.PeerInfo{pi})
|
||||||
err := dht.sendMessage(ctx, p, pmes)
|
err := dht.sendMessage(ctx, p, pmes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -157,7 +158,7 @@ var errInvalidRecord = errors.New("received invalid record")
|
|||||||
// NOTE: It will update the dht's peerstore with any new addresses
|
// NOTE: It will update the dht's peerstore with any new addresses
|
||||||
// it finds for the given peer.
|
// it finds for the given peer.
|
||||||
func (dht *IpfsDHT) getValueOrPeers(ctx context.Context, p peer.ID,
|
func (dht *IpfsDHT) getValueOrPeers(ctx context.Context, p peer.ID,
|
||||||
key key.Key) (*pb.Record, []peer.PeerInfo, error) {
|
key key.Key) (*pb.Record, []pstore.PeerInfo, error) {
|
||||||
|
|
||||||
pmes, err := dht.getValueSingle(ctx, p, key)
|
pmes, err := dht.getValueSingle(ctx, p, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -258,12 +259,12 @@ func (dht *IpfsDHT) Update(ctx context.Context, p peer.ID) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FindLocal looks for a peer with a given ID connected to this dht and returns the peer and the table it was found in.
|
// FindLocal looks for a peer with a given ID connected to this dht and returns the peer and the table it was found in.
|
||||||
func (dht *IpfsDHT) FindLocal(id peer.ID) peer.PeerInfo {
|
func (dht *IpfsDHT) FindLocal(id peer.ID) pstore.PeerInfo {
|
||||||
p := dht.routingTable.Find(id)
|
p := dht.routingTable.Find(id)
|
||||||
if p != "" {
|
if p != "" {
|
||||||
return dht.peerstore.PeerInfo(p)
|
return dht.peerstore.PeerInfo(p)
|
||||||
}
|
}
|
||||||
return peer.PeerInfo{}
|
return pstore.PeerInfo{}
|
||||||
}
|
}
|
||||||
|
|
||||||
// findPeerSingle asks peer 'p' if they know where the peer with id 'id' is
|
// findPeerSingle asks peer 'p' if they know where the peer with id 'id' is
|
||||||
|
@ -9,8 +9,8 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
routing "github.com/ipfs/go-ipfs/routing"
|
routing "github.com/ipfs/go-ipfs/routing"
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
|
|
||||||
goprocess "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess"
|
goprocess "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess"
|
||||||
periodicproc "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess/periodic"
|
periodicproc "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess/periodic"
|
||||||
|
@ -5,11 +5,11 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
pb "github.com/ipfs/go-ipfs/routing/dht/pb"
|
pb "github.com/ipfs/go-ipfs/routing/dht/pb"
|
||||||
inet "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net"
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
|
inet "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net"
|
||||||
ctxio "gx/ipfs/QmX6DhWrpBB5NtadXmPSXYNdVvuLfJXoFNMvUMoVvP5UJa/go-context/io"
|
ctxio "gx/ipfs/QmX6DhWrpBB5NtadXmPSXYNdVvuLfJXoFNMvUMoVvP5UJa/go-context/io"
|
||||||
ggio "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/io"
|
ggio "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/io"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// handleNewStream implements the inet.StreamHandler
|
// handleNewStream implements the inet.StreamHandler
|
||||||
|
@ -11,18 +11,18 @@ import (
|
|||||||
|
|
||||||
ds "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/ipfs/go-datastore"
|
ds "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/ipfs/go-datastore"
|
||||||
dssync "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/ipfs/go-datastore/sync"
|
dssync "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/ipfs/go-datastore/sync"
|
||||||
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
|
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
|
||||||
|
|
||||||
key "github.com/ipfs/go-ipfs/blocks/key"
|
key "github.com/ipfs/go-ipfs/blocks/key"
|
||||||
routing "github.com/ipfs/go-ipfs/routing"
|
routing "github.com/ipfs/go-ipfs/routing"
|
||||||
record "github.com/ipfs/go-ipfs/routing/record"
|
record "github.com/ipfs/go-ipfs/routing/record"
|
||||||
netutil "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/test/util"
|
|
||||||
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
|
|
||||||
ci "github.com/ipfs/go-ipfs/thirdparty/testutil/ci"
|
ci "github.com/ipfs/go-ipfs/thirdparty/testutil/ci"
|
||||||
travisci "github.com/ipfs/go-ipfs/thirdparty/testutil/ci/travis"
|
travisci "github.com/ipfs/go-ipfs/thirdparty/testutil/ci/travis"
|
||||||
|
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
|
netutil "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/test/util"
|
||||||
|
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
|
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
||||||
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
)
|
)
|
||||||
|
|
||||||
var testCaseValues = map[key.Key][]byte{}
|
var testCaseValues = map[key.Key][]byte{}
|
||||||
@ -73,8 +73,8 @@ func connect(t *testing.T, ctx context.Context, a, b *IpfsDHT) {
|
|||||||
t.Fatal("peers setup incorrectly: no local address")
|
t.Fatal("peers setup incorrectly: no local address")
|
||||||
}
|
}
|
||||||
|
|
||||||
a.peerstore.AddAddrs(idB, addrB, peer.TempAddrTTL)
|
a.peerstore.AddAddrs(idB, addrB, pstore.TempAddrTTL)
|
||||||
pi := peer.PeerInfo{ID: idB}
|
pi := pstore.PeerInfo{ID: idB}
|
||||||
if err := a.host.Connect(ctx, pi); err != nil {
|
if err := a.host.Connect(ctx, pi); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -705,7 +705,7 @@ func TestFindPeersConnectedToPeer(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// shouldFind := []peer.ID{peers[1], peers[3]}
|
// shouldFind := []peer.ID{peers[1], peers[3]}
|
||||||
found := []peer.PeerInfo{}
|
var found []pstore.PeerInfo
|
||||||
for nextp := range pchan {
|
for nextp := range pchan {
|
||||||
found = append(found, nextp)
|
found = append(found, nextp)
|
||||||
}
|
}
|
||||||
@ -776,14 +776,14 @@ func TestConnectCollision(t *testing.T) {
|
|||||||
|
|
||||||
errs := make(chan error)
|
errs := make(chan error)
|
||||||
go func() {
|
go func() {
|
||||||
dhtA.peerstore.AddAddr(peerB, addrB, peer.TempAddrTTL)
|
dhtA.peerstore.AddAddr(peerB, addrB, pstore.TempAddrTTL)
|
||||||
pi := peer.PeerInfo{ID: peerB}
|
pi := pstore.PeerInfo{ID: peerB}
|
||||||
err := dhtA.host.Connect(ctx, pi)
|
err := dhtA.host.Connect(ctx, pi)
|
||||||
errs <- err
|
errs <- err
|
||||||
}()
|
}()
|
||||||
go func() {
|
go func() {
|
||||||
dhtB.peerstore.AddAddr(peerA, addrA, peer.TempAddrTTL)
|
dhtB.peerstore.AddAddr(peerA, addrA, pstore.TempAddrTTL)
|
||||||
pi := peer.PeerInfo{ID: peerA}
|
pi := pstore.PeerInfo{ID: peerA}
|
||||||
err := dhtB.host.Connect(ctx, pi)
|
err := dhtB.host.Connect(ctx, pi)
|
||||||
errs <- err
|
errs <- err
|
||||||
}()
|
}()
|
||||||
|
@ -4,7 +4,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
)
|
)
|
||||||
|
|
||||||
type connDiagInfo struct {
|
type connDiagInfo struct {
|
||||||
|
@ -9,17 +9,17 @@ import (
|
|||||||
|
|
||||||
ds "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/ipfs/go-datastore"
|
ds "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/ipfs/go-datastore"
|
||||||
dssync "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/ipfs/go-datastore/sync"
|
dssync "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/ipfs/go-datastore/sync"
|
||||||
ggio "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/io"
|
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
|
||||||
|
|
||||||
key "github.com/ipfs/go-ipfs/blocks/key"
|
key "github.com/ipfs/go-ipfs/blocks/key"
|
||||||
routing "github.com/ipfs/go-ipfs/routing"
|
routing "github.com/ipfs/go-ipfs/routing"
|
||||||
pb "github.com/ipfs/go-ipfs/routing/dht/pb"
|
pb "github.com/ipfs/go-ipfs/routing/dht/pb"
|
||||||
record "github.com/ipfs/go-ipfs/routing/record"
|
record "github.com/ipfs/go-ipfs/routing/record"
|
||||||
inet "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net"
|
|
||||||
mocknet "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net/mock"
|
inet "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net"
|
||||||
|
mocknet "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net/mock"
|
||||||
|
ggio "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/io"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestGetFailures(t *testing.T) {
|
func TestGetFailures(t *testing.T) {
|
||||||
@ -183,7 +183,7 @@ func TestNotFound(t *testing.T) {
|
|||||||
case pb.Message_GET_VALUE:
|
case pb.Message_GET_VALUE:
|
||||||
resp := &pb.Message{Type: pmes.Type}
|
resp := &pb.Message{Type: pmes.Type}
|
||||||
|
|
||||||
ps := []peer.PeerInfo{}
|
ps := []pstore.PeerInfo{}
|
||||||
for i := 0; i < 7; i++ {
|
for i := 0; i < 7; i++ {
|
||||||
p := hosts[rand.Intn(len(hosts))].ID()
|
p := hosts[rand.Intn(len(hosts))].ID()
|
||||||
pi := host.Peerstore().PeerInfo(p)
|
pi := host.Peerstore().PeerInfo(p)
|
||||||
@ -262,7 +262,7 @@ func TestLessThanKResponses(t *testing.T) {
|
|||||||
pi := host.Peerstore().PeerInfo(hosts[1].ID())
|
pi := host.Peerstore().PeerInfo(hosts[1].ID())
|
||||||
resp := &pb.Message{
|
resp := &pb.Message{
|
||||||
Type: pmes.Type,
|
Type: pmes.Type,
|
||||||
CloserPeers: pb.PeerInfosToPBPeers(d.host.Network(), []peer.PeerInfo{pi}),
|
CloserPeers: pb.PeerInfosToPBPeers(d.host.Network(), []pstore.PeerInfo{pi}),
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := pbw.WriteMsg(resp); err != nil {
|
if err := pbw.WriteMsg(resp); err != nil {
|
||||||
|
@ -9,10 +9,12 @@ import (
|
|||||||
key "github.com/ipfs/go-ipfs/blocks/key"
|
key "github.com/ipfs/go-ipfs/blocks/key"
|
||||||
pb "github.com/ipfs/go-ipfs/routing/dht/pb"
|
pb "github.com/ipfs/go-ipfs/routing/dht/pb"
|
||||||
lgbl "github.com/ipfs/go-ipfs/thirdparty/loggables"
|
lgbl "github.com/ipfs/go-ipfs/thirdparty/loggables"
|
||||||
|
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto"
|
proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// The number of closer peers to send on requests.
|
// The number of closer peers to send on requests.
|
||||||
@ -63,7 +65,7 @@ func (dht *IpfsDHT) handleGetValue(ctx context.Context, p peer.ID, pmes *pb.Mess
|
|||||||
// Find closest peer on given cluster to desired key and reply with that info
|
// Find closest peer on given cluster to desired key and reply with that info
|
||||||
closer := dht.betterPeersToQuery(pmes, p, CloserPeerCount)
|
closer := dht.betterPeersToQuery(pmes, p, CloserPeerCount)
|
||||||
if len(closer) > 0 {
|
if len(closer) > 0 {
|
||||||
closerinfos := peer.PeerInfos(dht.peerstore, closer)
|
closerinfos := pstore.PeerInfos(dht.peerstore, closer)
|
||||||
for _, pi := range closerinfos {
|
for _, pi := range closerinfos {
|
||||||
log.Debugf("handleGetValue returning closer peer: '%s'", pi.ID)
|
log.Debugf("handleGetValue returning closer peer: '%s'", pi.ID)
|
||||||
if len(pi.Addrs) < 1 {
|
if len(pi.Addrs) < 1 {
|
||||||
@ -190,8 +192,8 @@ func (dht *IpfsDHT) handleFindPeer(ctx context.Context, p peer.ID, pmes *pb.Mess
|
|||||||
return resp, nil
|
return resp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var withAddresses []peer.PeerInfo
|
var withAddresses []pstore.PeerInfo
|
||||||
closestinfos := peer.PeerInfos(dht.peerstore, closest)
|
closestinfos := pstore.PeerInfos(dht.peerstore, closest)
|
||||||
for _, pi := range closestinfos {
|
for _, pi := range closestinfos {
|
||||||
if len(pi.Addrs) > 0 {
|
if len(pi.Addrs) > 0 {
|
||||||
withAddresses = append(withAddresses, pi)
|
withAddresses = append(withAddresses, pi)
|
||||||
@ -232,7 +234,7 @@ func (dht *IpfsDHT) handleGetProviders(ctx context.Context, p peer.ID, pmes *pb.
|
|||||||
}
|
}
|
||||||
|
|
||||||
if providers != nil && len(providers) > 0 {
|
if providers != nil && len(providers) > 0 {
|
||||||
infos := peer.PeerInfos(dht.peerstore, providers)
|
infos := pstore.PeerInfos(dht.peerstore, providers)
|
||||||
resp.ProviderPeers = pb.PeerInfosToPBPeers(dht.host.Network(), infos)
|
resp.ProviderPeers = pb.PeerInfosToPBPeers(dht.host.Network(), infos)
|
||||||
log.Debugf("%s have %d providers: %s", reqDesc, len(providers), infos)
|
log.Debugf("%s have %d providers: %s", reqDesc, len(providers), infos)
|
||||||
}
|
}
|
||||||
@ -240,7 +242,7 @@ func (dht *IpfsDHT) handleGetProviders(ctx context.Context, p peer.ID, pmes *pb.
|
|||||||
// Also send closer peers.
|
// Also send closer peers.
|
||||||
closer := dht.betterPeersToQuery(pmes, p, CloserPeerCount)
|
closer := dht.betterPeersToQuery(pmes, p, CloserPeerCount)
|
||||||
if closer != nil {
|
if closer != nil {
|
||||||
infos := peer.PeerInfos(dht.peerstore, closer)
|
infos := pstore.PeerInfos(dht.peerstore, closer)
|
||||||
resp.CloserPeers = pb.PeerInfosToPBPeers(dht.host.Network(), infos)
|
resp.CloserPeers = pb.PeerInfosToPBPeers(dht.host.Network(), infos)
|
||||||
log.Debugf("%s have %d closer peers: %s", reqDesc, len(closer), infos)
|
log.Debugf("%s have %d closer peers: %s", reqDesc, len(closer), infos)
|
||||||
}
|
}
|
||||||
@ -276,7 +278,7 @@ func (dht *IpfsDHT) handleAddProvider(ctx context.Context, p peer.ID, pmes *pb.M
|
|||||||
log.Infof("received provider %s for %s (addrs: %s)", p, key, pi.Addrs)
|
log.Infof("received provider %s for %s (addrs: %s)", p, key, pi.Addrs)
|
||||||
if pi.ID != dht.self { // dont add own addrs.
|
if pi.ID != dht.self { // dont add own addrs.
|
||||||
// add the received addresses to our peerstore.
|
// add the received addresses to our peerstore.
|
||||||
dht.peerstore.AddAddrs(pi.ID, pi.Addrs, peer.ProviderAddrTTL)
|
dht.peerstore.AddAddrs(pi.ID, pi.Addrs, pstore.ProviderAddrTTL)
|
||||||
}
|
}
|
||||||
dht.providers.AddProvider(ctx, key, p)
|
dht.providers.AddProvider(ctx, key, p)
|
||||||
}
|
}
|
||||||
|
@ -5,13 +5,15 @@ import (
|
|||||||
notif "github.com/ipfs/go-ipfs/notifications"
|
notif "github.com/ipfs/go-ipfs/notifications"
|
||||||
kb "github.com/ipfs/go-ipfs/routing/kbucket"
|
kb "github.com/ipfs/go-ipfs/routing/kbucket"
|
||||||
pset "github.com/ipfs/go-ipfs/thirdparty/peerset"
|
pset "github.com/ipfs/go-ipfs/thirdparty/peerset"
|
||||||
|
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Required in order for proper JSON marshaling
|
// Required in order for proper JSON marshaling
|
||||||
func pointerizePeerInfos(pis []peer.PeerInfo) []*peer.PeerInfo {
|
func pointerizePeerInfos(pis []pstore.PeerInfo) []*pstore.PeerInfo {
|
||||||
out := make([]*peer.PeerInfo, len(pis))
|
out := make([]*pstore.PeerInfo, len(pis))
|
||||||
for i, p := range pis {
|
for i, p := range pis {
|
||||||
np := p
|
np := p
|
||||||
out[i] = &np
|
out[i] = &np
|
||||||
@ -56,7 +58,7 @@ func (dht *IpfsDHT) GetClosestPeers(ctx context.Context, key key.Key) (<-chan pe
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var filtered []peer.PeerInfo
|
var filtered []pstore.PeerInfo
|
||||||
for _, clp := range closer {
|
for _, clp := range closer {
|
||||||
if kb.Closer(clp, dht.self, key) && peerset.TryAdd(clp) {
|
if kb.Closer(clp, dht.self, key) && peerset.TryAdd(clp) {
|
||||||
select {
|
select {
|
||||||
@ -101,7 +103,7 @@ func (dht *IpfsDHT) closerPeersSingle(ctx context.Context, key key.Key, p peer.I
|
|||||||
for _, pbp := range pmes.GetCloserPeers() {
|
for _, pbp := range pmes.GetCloserPeers() {
|
||||||
pid := peer.ID(pbp.GetId())
|
pid := peer.ID(pbp.GetId())
|
||||||
if pid != dht.self { // dont add self
|
if pid != dht.self { // dont add self
|
||||||
dht.peerstore.AddAddrs(pid, pbp.Addresses(), peer.TempAddrTTL)
|
dht.peerstore.AddAddrs(pid, pbp.Addresses(), pstore.TempAddrTTL)
|
||||||
out = append(out, pid)
|
out = append(out, pid)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@ package dht
|
|||||||
import (
|
import (
|
||||||
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
|
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
|
||||||
|
|
||||||
inet "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net"
|
inet "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net"
|
||||||
)
|
)
|
||||||
|
|
||||||
// netNotifiee defines methods to be used with the IpfsDHT
|
// netNotifiee defines methods to be used with the IpfsDHT
|
||||||
|
@ -4,15 +4,16 @@ import (
|
|||||||
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
|
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
|
||||||
|
|
||||||
key "github.com/ipfs/go-ipfs/blocks/key"
|
key "github.com/ipfs/go-ipfs/blocks/key"
|
||||||
inet "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net"
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
|
inet "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var log = logging.Logger("dht.pb")
|
var log = logging.Logger("dht.pb")
|
||||||
|
|
||||||
type PeerRoutingInfo struct {
|
type PeerRoutingInfo struct {
|
||||||
peer.PeerInfo
|
pstore.PeerInfo
|
||||||
inet.Connectedness
|
inet.Connectedness
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -40,7 +41,7 @@ func peerRoutingInfoToPBPeer(p PeerRoutingInfo) *Message_Peer {
|
|||||||
return pbp
|
return pbp
|
||||||
}
|
}
|
||||||
|
|
||||||
func peerInfoToPBPeer(p peer.PeerInfo) *Message_Peer {
|
func peerInfoToPBPeer(p pstore.PeerInfo) *Message_Peer {
|
||||||
pbp := new(Message_Peer)
|
pbp := new(Message_Peer)
|
||||||
|
|
||||||
pbp.Addrs = make([][]byte, len(p.Addrs))
|
pbp.Addrs = make([][]byte, len(p.Addrs))
|
||||||
@ -52,9 +53,9 @@ func peerInfoToPBPeer(p peer.PeerInfo) *Message_Peer {
|
|||||||
return pbp
|
return pbp
|
||||||
}
|
}
|
||||||
|
|
||||||
// PBPeerToPeer turns a *Message_Peer into its peer.PeerInfo counterpart
|
// PBPeerToPeer turns a *Message_Peer into its pstore.PeerInfo counterpart
|
||||||
func PBPeerToPeerInfo(pbp *Message_Peer) peer.PeerInfo {
|
func PBPeerToPeerInfo(pbp *Message_Peer) pstore.PeerInfo {
|
||||||
return peer.PeerInfo{
|
return pstore.PeerInfo{
|
||||||
ID: peer.ID(pbp.GetId()),
|
ID: peer.ID(pbp.GetId()),
|
||||||
Addrs: pbp.Addresses(),
|
Addrs: pbp.Addresses(),
|
||||||
}
|
}
|
||||||
@ -62,7 +63,7 @@ func PBPeerToPeerInfo(pbp *Message_Peer) peer.PeerInfo {
|
|||||||
|
|
||||||
// RawPeerInfosToPBPeers converts a slice of Peers into a slice of *Message_Peers,
|
// RawPeerInfosToPBPeers converts a slice of Peers into a slice of *Message_Peers,
|
||||||
// ready to go out on the wire.
|
// ready to go out on the wire.
|
||||||
func RawPeerInfosToPBPeers(peers []peer.PeerInfo) []*Message_Peer {
|
func RawPeerInfosToPBPeers(peers []pstore.PeerInfo) []*Message_Peer {
|
||||||
pbpeers := make([]*Message_Peer, len(peers))
|
pbpeers := make([]*Message_Peer, len(peers))
|
||||||
for i, p := range peers {
|
for i, p := range peers {
|
||||||
pbpeers[i] = peerInfoToPBPeer(p)
|
pbpeers[i] = peerInfoToPBPeer(p)
|
||||||
@ -74,7 +75,7 @@ func RawPeerInfosToPBPeers(peers []peer.PeerInfo) []*Message_Peer {
|
|||||||
// which can be written to a message and sent out. the key thing this function
|
// which can be written to a message and sent out. the key thing this function
|
||||||
// does (in addition to PeersToPBPeers) is set the ConnectionType with
|
// does (in addition to PeersToPBPeers) is set the ConnectionType with
|
||||||
// information from the given inet.Network.
|
// information from the given inet.Network.
|
||||||
func PeerInfosToPBPeers(n inet.Network, peers []peer.PeerInfo) []*Message_Peer {
|
func PeerInfosToPBPeers(n inet.Network, peers []pstore.PeerInfo) []*Message_Peer {
|
||||||
pbps := RawPeerInfosToPBPeers(peers)
|
pbps := RawPeerInfosToPBPeers(peers)
|
||||||
for i, pbp := range pbps {
|
for i, pbp := range pbps {
|
||||||
c := ConnectionType(n.Connectedness(peers[i].ID))
|
c := ConnectionType(n.Connectedness(peers[i].ID))
|
||||||
@ -91,10 +92,10 @@ func PeerRoutingInfosToPBPeers(peers []PeerRoutingInfo) []*Message_Peer {
|
|||||||
return pbpeers
|
return pbpeers
|
||||||
}
|
}
|
||||||
|
|
||||||
// PBPeersToPeerInfos converts given []*Message_Peer into []peer.PeerInfo
|
// PBPeersToPeerInfos converts given []*Message_Peer into []pstore.PeerInfo
|
||||||
// Invalid addresses will be silently omitted.
|
// Invalid addresses will be silently omitted.
|
||||||
func PBPeersToPeerInfos(pbps []*Message_Peer) []peer.PeerInfo {
|
func PBPeersToPeerInfos(pbps []*Message_Peer) []pstore.PeerInfo {
|
||||||
peers := make([]peer.PeerInfo, 0, len(pbps))
|
peers := make([]pstore.PeerInfo, 0, len(pbps))
|
||||||
for _, pbp := range pbps {
|
for _, pbp := range pbps {
|
||||||
peers = append(peers, PBPeerToPeerInfo(pbp))
|
peers = append(peers, PBPeerToPeerInfo(pbp))
|
||||||
}
|
}
|
||||||
|
@ -4,9 +4,9 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
key "github.com/ipfs/go-ipfs/blocks/key"
|
key "github.com/ipfs/go-ipfs/blocks/key"
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
goprocess "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess"
|
goprocess "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess"
|
||||||
goprocessctx "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess/context"
|
goprocessctx "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess/context"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
|
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
)
|
)
|
||||||
|
@ -4,7 +4,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
key "github.com/ipfs/go-ipfs/blocks/key"
|
key "github.com/ipfs/go-ipfs/blocks/key"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
|
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
)
|
)
|
||||||
|
@ -8,14 +8,15 @@ import (
|
|||||||
"github.com/ipfs/go-ipfs/routing"
|
"github.com/ipfs/go-ipfs/routing"
|
||||||
pset "github.com/ipfs/go-ipfs/thirdparty/peerset"
|
pset "github.com/ipfs/go-ipfs/thirdparty/peerset"
|
||||||
todoctr "github.com/ipfs/go-ipfs/thirdparty/todocounter"
|
todoctr "github.com/ipfs/go-ipfs/thirdparty/todocounter"
|
||||||
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
|
||||||
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
queue "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer/queue"
|
|
||||||
|
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
process "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess"
|
process "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess"
|
||||||
ctxproc "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess/context"
|
ctxproc "gx/ipfs/QmQopLATEYMNg7dVqZRNDfeE2S1yKy8zrRh5xnYiuqeZBn/goprocess/context"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
|
queue "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore/queue"
|
||||||
|
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
|
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
||||||
)
|
)
|
||||||
|
|
||||||
var maxQueryConcurrency = AlphaValue
|
var maxQueryConcurrency = AlphaValue
|
||||||
@ -28,10 +29,10 @@ type dhtQuery struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type dhtQueryResult struct {
|
type dhtQueryResult struct {
|
||||||
value []byte // GetValue
|
value []byte // GetValue
|
||||||
peer peer.PeerInfo // FindPeer
|
peer pstore.PeerInfo // FindPeer
|
||||||
providerPeers []peer.PeerInfo // GetProviders
|
providerPeers []pstore.PeerInfo // GetProviders
|
||||||
closerPeers []peer.PeerInfo // *
|
closerPeers []pstore.PeerInfo // *
|
||||||
success bool
|
success bool
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -239,7 +240,7 @@ func (r *dhtQueryRunner) queryPeer(proc process.Process, p peer.ID) {
|
|||||||
// forward progress during potentially very high latency dials.
|
// forward progress during potentially very high latency dials.
|
||||||
r.rateLimit <- struct{}{}
|
r.rateLimit <- struct{}{}
|
||||||
|
|
||||||
pi := peer.PeerInfo{ID: p}
|
pi := pstore.PeerInfo{ID: p}
|
||||||
|
|
||||||
if err := r.query.dht.host.Connect(ctx, pi); err != nil {
|
if err := r.query.dht.host.Connect(ctx, pi); err != nil {
|
||||||
log.Debugf("Error connecting: %s", err)
|
log.Debugf("Error connecting: %s", err)
|
||||||
@ -286,7 +287,7 @@ func (r *dhtQueryRunner) queryPeer(proc process.Process, p peer.ID) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// add their addresses to the dialer's peerstore
|
// add their addresses to the dialer's peerstore
|
||||||
r.query.dht.peerstore.AddAddrs(next.ID, next.Addrs, peer.TempAddrTTL)
|
r.query.dht.peerstore.AddAddrs(next.ID, next.Addrs, pstore.TempAddrTTL)
|
||||||
r.addPeerToQuery(next.ID)
|
r.addPeerToQuery(next.ID)
|
||||||
log.Debugf("PEERS CLOSER -- worker for: %v added %v (%v)", p, next.ID, next.Addrs)
|
log.Debugf("PEERS CLOSER -- worker for: %v added %v (%v)", p, next.ID, next.Addrs)
|
||||||
}
|
}
|
||||||
|
@ -7,10 +7,10 @@ import (
|
|||||||
routing "github.com/ipfs/go-ipfs/routing"
|
routing "github.com/ipfs/go-ipfs/routing"
|
||||||
pb "github.com/ipfs/go-ipfs/routing/dht/pb"
|
pb "github.com/ipfs/go-ipfs/routing/dht/pb"
|
||||||
record "github.com/ipfs/go-ipfs/routing/record"
|
record "github.com/ipfs/go-ipfs/routing/record"
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
ci "gx/ipfs/QmUEUu1CM8bxBJxc3ZLojAi8evhTr4byQogWstABet79oY/go-libp2p-crypto"
|
ci "gx/ipfs/QmUEUu1CM8bxBJxc3ZLojAi8evhTr4byQogWstABet79oY/go-libp2p-crypto"
|
||||||
ctxfrac "gx/ipfs/QmX6DhWrpBB5NtadXmPSXYNdVvuLfJXoFNMvUMoVvP5UJa/go-context/frac"
|
ctxfrac "gx/ipfs/QmX6DhWrpBB5NtadXmPSXYNdVvuLfJXoFNMvUMoVvP5UJa/go-context/frac"
|
||||||
"gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
"gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// MaxRecordAge specifies the maximum time that any node will hold onto a record
|
// MaxRecordAge specifies the maximum time that any node will hold onto a record
|
||||||
|
@ -12,9 +12,11 @@ import (
|
|||||||
kb "github.com/ipfs/go-ipfs/routing/kbucket"
|
kb "github.com/ipfs/go-ipfs/routing/kbucket"
|
||||||
record "github.com/ipfs/go-ipfs/routing/record"
|
record "github.com/ipfs/go-ipfs/routing/record"
|
||||||
pset "github.com/ipfs/go-ipfs/thirdparty/peerset"
|
pset "github.com/ipfs/go-ipfs/thirdparty/peerset"
|
||||||
inet "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net"
|
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
|
inet "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// asyncQueryBuffer is the size of buffered channels in async queries. This
|
// asyncQueryBuffer is the size of buffered channels in async queries. This
|
||||||
@ -258,8 +260,8 @@ func (dht *IpfsDHT) Provide(ctx context.Context, key key.Key) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FindProviders searches until the context expires.
|
// FindProviders searches until the context expires.
|
||||||
func (dht *IpfsDHT) FindProviders(ctx context.Context, key key.Key) ([]peer.PeerInfo, error) {
|
func (dht *IpfsDHT) FindProviders(ctx context.Context, key key.Key) ([]pstore.PeerInfo, error) {
|
||||||
var providers []peer.PeerInfo
|
var providers []pstore.PeerInfo
|
||||||
for p := range dht.FindProvidersAsync(ctx, key, KValue) {
|
for p := range dht.FindProvidersAsync(ctx, key, KValue) {
|
||||||
providers = append(providers, p)
|
providers = append(providers, p)
|
||||||
}
|
}
|
||||||
@ -269,14 +271,14 @@ func (dht *IpfsDHT) FindProviders(ctx context.Context, key key.Key) ([]peer.Peer
|
|||||||
// FindProvidersAsync is the same thing as FindProviders, but returns a channel.
|
// FindProvidersAsync is the same thing as FindProviders, but returns a channel.
|
||||||
// Peers will be returned on the channel as soon as they are found, even before
|
// Peers will be returned on the channel as soon as they are found, even before
|
||||||
// the search query completes.
|
// the search query completes.
|
||||||
func (dht *IpfsDHT) FindProvidersAsync(ctx context.Context, key key.Key, count int) <-chan peer.PeerInfo {
|
func (dht *IpfsDHT) FindProvidersAsync(ctx context.Context, key key.Key, count int) <-chan pstore.PeerInfo {
|
||||||
log.Event(ctx, "findProviders", &key)
|
log.Event(ctx, "findProviders", &key)
|
||||||
peerOut := make(chan peer.PeerInfo, count)
|
peerOut := make(chan pstore.PeerInfo, count)
|
||||||
go dht.findProvidersAsyncRoutine(ctx, key, count, peerOut)
|
go dht.findProvidersAsyncRoutine(ctx, key, count, peerOut)
|
||||||
return peerOut
|
return peerOut
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dht *IpfsDHT) findProvidersAsyncRoutine(ctx context.Context, key key.Key, count int, peerOut chan peer.PeerInfo) {
|
func (dht *IpfsDHT) findProvidersAsyncRoutine(ctx context.Context, key key.Key, count int, peerOut chan pstore.PeerInfo) {
|
||||||
defer log.EventBegin(ctx, "findProvidersAsync", &key).Done()
|
defer log.EventBegin(ctx, "findProvidersAsync", &key).Done()
|
||||||
defer close(peerOut)
|
defer close(peerOut)
|
||||||
|
|
||||||
@ -357,7 +359,7 @@ func (dht *IpfsDHT) findProvidersAsyncRoutine(ctx context.Context, key key.Key,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FindPeer searches for a peer with given ID.
|
// FindPeer searches for a peer with given ID.
|
||||||
func (dht *IpfsDHT) FindPeer(ctx context.Context, id peer.ID) (peer.PeerInfo, error) {
|
func (dht *IpfsDHT) FindPeer(ctx context.Context, id peer.ID) (pstore.PeerInfo, error) {
|
||||||
defer log.EventBegin(ctx, "FindPeer", id).Done()
|
defer log.EventBegin(ctx, "FindPeer", id).Done()
|
||||||
|
|
||||||
// Check if were already connected to them
|
// Check if were already connected to them
|
||||||
@ -367,7 +369,7 @@ func (dht *IpfsDHT) FindPeer(ctx context.Context, id peer.ID) (peer.PeerInfo, er
|
|||||||
|
|
||||||
peers := dht.routingTable.NearestPeers(kb.ConvertPeerID(id), KValue)
|
peers := dht.routingTable.NearestPeers(kb.ConvertPeerID(id), KValue)
|
||||||
if len(peers) == 0 {
|
if len(peers) == 0 {
|
||||||
return peer.PeerInfo{}, kb.ErrLookupFailure
|
return pstore.PeerInfo{}, kb.ErrLookupFailure
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sanity...
|
// Sanity...
|
||||||
@ -415,22 +417,22 @@ func (dht *IpfsDHT) FindPeer(ctx context.Context, id peer.ID) (peer.PeerInfo, er
|
|||||||
// run it!
|
// run it!
|
||||||
result, err := query.Run(ctx, peers)
|
result, err := query.Run(ctx, peers)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return peer.PeerInfo{}, err
|
return pstore.PeerInfo{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Debugf("FindPeer %v %v", id, result.success)
|
log.Debugf("FindPeer %v %v", id, result.success)
|
||||||
if result.peer.ID == "" {
|
if result.peer.ID == "" {
|
||||||
return peer.PeerInfo{}, routing.ErrNotFound
|
return pstore.PeerInfo{}, routing.ErrNotFound
|
||||||
}
|
}
|
||||||
|
|
||||||
return result.peer, nil
|
return result.peer, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// FindPeersConnectedToPeer searches for peers directly connected to a given peer.
|
// FindPeersConnectedToPeer searches for peers directly connected to a given peer.
|
||||||
func (dht *IpfsDHT) FindPeersConnectedToPeer(ctx context.Context, id peer.ID) (<-chan peer.PeerInfo, error) {
|
func (dht *IpfsDHT) FindPeersConnectedToPeer(ctx context.Context, id peer.ID) (<-chan pstore.PeerInfo, error) {
|
||||||
|
|
||||||
peerchan := make(chan peer.PeerInfo, asyncQueryBuffer)
|
peerchan := make(chan pstore.PeerInfo, asyncQueryBuffer)
|
||||||
peersSeen := peer.Set{}
|
peersSeen := make(map[peer.ID]struct{})
|
||||||
|
|
||||||
peers := dht.routingTable.NearestPeers(kb.ConvertPeerID(id), KValue)
|
peers := dht.routingTable.NearestPeers(kb.ConvertPeerID(id), KValue)
|
||||||
if len(peers) == 0 {
|
if len(peers) == 0 {
|
||||||
@ -445,7 +447,7 @@ func (dht *IpfsDHT) FindPeersConnectedToPeer(ctx context.Context, id peer.ID) (<
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var clpeers []peer.PeerInfo
|
var clpeers []pstore.PeerInfo
|
||||||
closer := pmes.GetCloserPeers()
|
closer := pmes.GetCloserPeers()
|
||||||
for _, pbp := range closer {
|
for _, pbp := range closer {
|
||||||
pi := pb.PBPeerToPeerInfo(pbp)
|
pi := pb.PBPeerToPeerInfo(pbp)
|
||||||
|
@ -4,7 +4,7 @@ import (
|
|||||||
"container/list"
|
"container/list"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Bucket holds a list of peers.
|
// Bucket holds a list of peers.
|
||||||
|
@ -2,7 +2,7 @@ package kbucket
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"container/list"
|
"container/list"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
"sort"
|
"sort"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -7,8 +7,9 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var log = logging.Logger("table")
|
var log = logging.Logger("table")
|
||||||
@ -23,7 +24,7 @@ type RoutingTable struct {
|
|||||||
tabLock sync.RWMutex
|
tabLock sync.RWMutex
|
||||||
|
|
||||||
// latency metrics
|
// latency metrics
|
||||||
metrics peer.Metrics
|
metrics pstore.Metrics
|
||||||
|
|
||||||
// Maximum acceptable latency for peers in this cluster
|
// Maximum acceptable latency for peers in this cluster
|
||||||
maxLatency time.Duration
|
maxLatency time.Duration
|
||||||
@ -34,7 +35,7 @@ type RoutingTable struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewRoutingTable creates a new routing table with a given bucketsize, local ID, and latency tolerance.
|
// NewRoutingTable creates a new routing table with a given bucketsize, local ID, and latency tolerance.
|
||||||
func NewRoutingTable(bucketsize int, localID ID, latency time.Duration, m peer.Metrics) *RoutingTable {
|
func NewRoutingTable(bucketsize int, localID ID, latency time.Duration, m pstore.Metrics) *RoutingTable {
|
||||||
rt := new(RoutingTable)
|
rt := new(RoutingTable)
|
||||||
rt.Buckets = []*Bucket{newBucket()}
|
rt.Buckets = []*Bucket{newBucket()}
|
||||||
rt.bucketsize = bucketsize
|
rt.bucketsize = bucketsize
|
||||||
|
@ -7,7 +7,8 @@ import (
|
|||||||
|
|
||||||
tu "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
tu "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
||||||
|
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Test basic features of the bucket struct
|
// Test basic features of the bucket struct
|
||||||
@ -51,7 +52,7 @@ func TestBucket(t *testing.T) {
|
|||||||
// Right now, this just makes sure that it doesnt hang or crash
|
// Right now, this just makes sure that it doesnt hang or crash
|
||||||
func TestTableUpdate(t *testing.T) {
|
func TestTableUpdate(t *testing.T) {
|
||||||
local := tu.RandPeerIDFatal(t)
|
local := tu.RandPeerIDFatal(t)
|
||||||
m := peer.NewMetrics()
|
m := pstore.NewMetrics()
|
||||||
rt := NewRoutingTable(10, ConvertPeerID(local), time.Hour, m)
|
rt := NewRoutingTable(10, ConvertPeerID(local), time.Hour, m)
|
||||||
|
|
||||||
peers := make([]peer.ID, 100)
|
peers := make([]peer.ID, 100)
|
||||||
@ -75,7 +76,7 @@ func TestTableUpdate(t *testing.T) {
|
|||||||
|
|
||||||
func TestTableFind(t *testing.T) {
|
func TestTableFind(t *testing.T) {
|
||||||
local := tu.RandPeerIDFatal(t)
|
local := tu.RandPeerIDFatal(t)
|
||||||
m := peer.NewMetrics()
|
m := pstore.NewMetrics()
|
||||||
rt := NewRoutingTable(10, ConvertPeerID(local), time.Hour, m)
|
rt := NewRoutingTable(10, ConvertPeerID(local), time.Hour, m)
|
||||||
|
|
||||||
peers := make([]peer.ID, 100)
|
peers := make([]peer.ID, 100)
|
||||||
@ -93,7 +94,7 @@ func TestTableFind(t *testing.T) {
|
|||||||
|
|
||||||
func TestTableFindMultiple(t *testing.T) {
|
func TestTableFindMultiple(t *testing.T) {
|
||||||
local := tu.RandPeerIDFatal(t)
|
local := tu.RandPeerIDFatal(t)
|
||||||
m := peer.NewMetrics()
|
m := pstore.NewMetrics()
|
||||||
rt := NewRoutingTable(20, ConvertPeerID(local), time.Hour, m)
|
rt := NewRoutingTable(20, ConvertPeerID(local), time.Hour, m)
|
||||||
|
|
||||||
peers := make([]peer.ID, 100)
|
peers := make([]peer.ID, 100)
|
||||||
@ -114,7 +115,7 @@ func TestTableFindMultiple(t *testing.T) {
|
|||||||
// and set GOMAXPROCS above 1
|
// and set GOMAXPROCS above 1
|
||||||
func TestTableMultithreaded(t *testing.T) {
|
func TestTableMultithreaded(t *testing.T) {
|
||||||
local := peer.ID("localPeer")
|
local := peer.ID("localPeer")
|
||||||
m := peer.NewMetrics()
|
m := pstore.NewMetrics()
|
||||||
tab := NewRoutingTable(20, ConvertPeerID(local), time.Hour, m)
|
tab := NewRoutingTable(20, ConvertPeerID(local), time.Hour, m)
|
||||||
var peers []peer.ID
|
var peers []peer.ID
|
||||||
for i := 0; i < 500; i++ {
|
for i := 0; i < 500; i++ {
|
||||||
@ -153,7 +154,7 @@ func TestTableMultithreaded(t *testing.T) {
|
|||||||
func BenchmarkUpdates(b *testing.B) {
|
func BenchmarkUpdates(b *testing.B) {
|
||||||
b.StopTimer()
|
b.StopTimer()
|
||||||
local := ConvertKey("localKey")
|
local := ConvertKey("localKey")
|
||||||
m := peer.NewMetrics()
|
m := pstore.NewMetrics()
|
||||||
tab := NewRoutingTable(20, local, time.Hour, m)
|
tab := NewRoutingTable(20, local, time.Hour, m)
|
||||||
|
|
||||||
var peers []peer.ID
|
var peers []peer.ID
|
||||||
@ -170,7 +171,7 @@ func BenchmarkUpdates(b *testing.B) {
|
|||||||
func BenchmarkFinds(b *testing.B) {
|
func BenchmarkFinds(b *testing.B) {
|
||||||
b.StopTimer()
|
b.StopTimer()
|
||||||
local := ConvertKey("localKey")
|
local := ConvertKey("localKey")
|
||||||
m := peer.NewMetrics()
|
m := pstore.NewMetrics()
|
||||||
tab := NewRoutingTable(20, local, time.Hour, m)
|
tab := NewRoutingTable(20, local, time.Hour, m)
|
||||||
|
|
||||||
var peers []peer.ID
|
var peers []peer.ID
|
||||||
|
@ -7,8 +7,8 @@ import (
|
|||||||
|
|
||||||
key "github.com/ipfs/go-ipfs/blocks/key"
|
key "github.com/ipfs/go-ipfs/blocks/key"
|
||||||
ks "github.com/ipfs/go-ipfs/routing/keyspace"
|
ks "github.com/ipfs/go-ipfs/routing/keyspace"
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Returned if a routing table query returns no results. This is NOT expected
|
// Returned if a routing table query returns no results. This is NOT expected
|
||||||
|
@ -9,12 +9,14 @@ import (
|
|||||||
routing "github.com/ipfs/go-ipfs/routing"
|
routing "github.com/ipfs/go-ipfs/routing"
|
||||||
dhtpb "github.com/ipfs/go-ipfs/routing/dht/pb"
|
dhtpb "github.com/ipfs/go-ipfs/routing/dht/pb"
|
||||||
"github.com/ipfs/go-ipfs/thirdparty/testutil"
|
"github.com/ipfs/go-ipfs/thirdparty/testutil"
|
||||||
|
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
|
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
|
||||||
proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto"
|
proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var log = logging.Logger("mockrouter")
|
var log = logging.Logger("mockrouter")
|
||||||
@ -72,17 +74,17 @@ func (c *client) GetValues(ctx context.Context, key key.Key, count int) ([]routi
|
|||||||
return []routing.RecvdVal{{Val: data, From: c.peer.ID()}}, nil
|
return []routing.RecvdVal{{Val: data, From: c.peer.ID()}}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *client) FindProviders(ctx context.Context, key key.Key) ([]peer.PeerInfo, error) {
|
func (c *client) FindProviders(ctx context.Context, key key.Key) ([]pstore.PeerInfo, error) {
|
||||||
return c.server.Providers(key), nil
|
return c.server.Providers(key), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *client) FindPeer(ctx context.Context, pid peer.ID) (peer.PeerInfo, error) {
|
func (c *client) FindPeer(ctx context.Context, pid peer.ID) (pstore.PeerInfo, error) {
|
||||||
log.Debugf("FindPeer: %s", pid)
|
log.Debugf("FindPeer: %s", pid)
|
||||||
return peer.PeerInfo{}, nil
|
return pstore.PeerInfo{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *client) FindProvidersAsync(ctx context.Context, k key.Key, max int) <-chan peer.PeerInfo {
|
func (c *client) FindProvidersAsync(ctx context.Context, k key.Key, max int) <-chan pstore.PeerInfo {
|
||||||
out := make(chan peer.PeerInfo)
|
out := make(chan pstore.PeerInfo)
|
||||||
go func() {
|
go func() {
|
||||||
defer close(out)
|
defer close(out)
|
||||||
for i, p := range c.server.Providers(k) {
|
for i, p := range c.server.Providers(k) {
|
||||||
@ -102,7 +104,7 @@ func (c *client) FindProvidersAsync(ctx context.Context, k key.Key, max int) <-c
|
|||||||
// Provide returns once the message is on the network. Value is not necessarily
|
// Provide returns once the message is on the network. Value is not necessarily
|
||||||
// visible yet.
|
// visible yet.
|
||||||
func (c *client) Provide(_ context.Context, key key.Key) error {
|
func (c *client) Provide(_ context.Context, key key.Key) error {
|
||||||
info := peer.PeerInfo{
|
info := pstore.PeerInfo{
|
||||||
ID: c.peer.ID(),
|
ID: c.peer.ID(),
|
||||||
Addrs: []ma.Multiaddr{c.peer.Address()},
|
Addrs: []ma.Multiaddr{c.peer.Address()},
|
||||||
}
|
}
|
||||||
|
@ -9,14 +9,16 @@ import (
|
|||||||
dssync "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/ipfs/go-datastore/sync"
|
dssync "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/ipfs/go-datastore/sync"
|
||||||
key "github.com/ipfs/go-ipfs/blocks/key"
|
key "github.com/ipfs/go-ipfs/blocks/key"
|
||||||
"github.com/ipfs/go-ipfs/thirdparty/testutil"
|
"github.com/ipfs/go-ipfs/thirdparty/testutil"
|
||||||
|
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// server is the mockrouting.Client's private interface to the routing server
|
// server is the mockrouting.Client's private interface to the routing server
|
||||||
type server interface {
|
type server interface {
|
||||||
Announce(peer.PeerInfo, key.Key) error
|
Announce(pstore.PeerInfo, key.Key) error
|
||||||
Providers(key.Key) []peer.PeerInfo
|
Providers(key.Key) []pstore.PeerInfo
|
||||||
|
|
||||||
Server
|
Server
|
||||||
}
|
}
|
||||||
@ -30,11 +32,11 @@ type s struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type providerRecord struct {
|
type providerRecord struct {
|
||||||
Peer peer.PeerInfo
|
Peer pstore.PeerInfo
|
||||||
Created time.Time
|
Created time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
func (rs *s) Announce(p peer.PeerInfo, k key.Key) error {
|
func (rs *s) Announce(p pstore.PeerInfo, k key.Key) error {
|
||||||
rs.lock.Lock()
|
rs.lock.Lock()
|
||||||
defer rs.lock.Unlock()
|
defer rs.lock.Unlock()
|
||||||
|
|
||||||
@ -49,13 +51,13 @@ func (rs *s) Announce(p peer.PeerInfo, k key.Key) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (rs *s) Providers(k key.Key) []peer.PeerInfo {
|
func (rs *s) Providers(k key.Key) []pstore.PeerInfo {
|
||||||
rs.delayConf.Query.Wait() // before locking
|
rs.delayConf.Query.Wait() // before locking
|
||||||
|
|
||||||
rs.lock.RLock()
|
rs.lock.RLock()
|
||||||
defer rs.lock.RUnlock()
|
defer rs.lock.RUnlock()
|
||||||
|
|
||||||
var ret []peer.PeerInfo
|
var ret []pstore.PeerInfo
|
||||||
records, ok := rs.providers[k]
|
records, ok := rs.providers[k]
|
||||||
if !ok {
|
if !ok {
|
||||||
return ret
|
return ret
|
||||||
|
@ -7,8 +7,9 @@ import (
|
|||||||
key "github.com/ipfs/go-ipfs/blocks/key"
|
key "github.com/ipfs/go-ipfs/blocks/key"
|
||||||
delay "github.com/ipfs/go-ipfs/thirdparty/delay"
|
delay "github.com/ipfs/go-ipfs/thirdparty/delay"
|
||||||
"github.com/ipfs/go-ipfs/thirdparty/testutil"
|
"github.com/ipfs/go-ipfs/thirdparty/testutil"
|
||||||
|
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestKeyNotFound(t *testing.T) {
|
func TestKeyNotFound(t *testing.T) {
|
||||||
@ -150,7 +151,7 @@ func TestValidAfter(t *testing.T) {
|
|||||||
|
|
||||||
rs.Client(pi).Provide(ctx, key)
|
rs.Client(pi).Provide(ctx, key)
|
||||||
|
|
||||||
var providers []peer.PeerInfo
|
var providers []pstore.PeerInfo
|
||||||
providers, err := rs.Client(pi).FindProviders(ctx, key)
|
providers, err := rs.Client(pi).FindProviders(ctx, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
|
@ -5,7 +5,7 @@ import (
|
|||||||
sync "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/ipfs/go-datastore/sync"
|
sync "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/ipfs/go-datastore/sync"
|
||||||
dht "github.com/ipfs/go-ipfs/routing/dht"
|
dht "github.com/ipfs/go-ipfs/routing/dht"
|
||||||
"github.com/ipfs/go-ipfs/thirdparty/testutil"
|
"github.com/ipfs/go-ipfs/thirdparty/testutil"
|
||||||
mocknet "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net/mock"
|
mocknet "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net/mock"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -10,8 +10,9 @@ import (
|
|||||||
routing "github.com/ipfs/go-ipfs/routing"
|
routing "github.com/ipfs/go-ipfs/routing"
|
||||||
delay "github.com/ipfs/go-ipfs/thirdparty/delay"
|
delay "github.com/ipfs/go-ipfs/thirdparty/delay"
|
||||||
"github.com/ipfs/go-ipfs/thirdparty/testutil"
|
"github.com/ipfs/go-ipfs/thirdparty/testutil"
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Server provides mockrouting Clients
|
// Server provides mockrouting Clients
|
||||||
@ -22,7 +23,7 @@ type Server interface {
|
|||||||
|
|
||||||
// Client implements IpfsRouting
|
// Client implements IpfsRouting
|
||||||
type Client interface {
|
type Client interface {
|
||||||
FindProviders(context.Context, key.Key) ([]peer.PeerInfo, error)
|
FindProviders(context.Context, key.Key) ([]pstore.PeerInfo, error)
|
||||||
routing.IpfsRouting
|
routing.IpfsRouting
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,10 +6,11 @@ import (
|
|||||||
key "github.com/ipfs/go-ipfs/blocks/key"
|
key "github.com/ipfs/go-ipfs/blocks/key"
|
||||||
repo "github.com/ipfs/go-ipfs/repo"
|
repo "github.com/ipfs/go-ipfs/repo"
|
||||||
routing "github.com/ipfs/go-ipfs/routing"
|
routing "github.com/ipfs/go-ipfs/routing"
|
||||||
p2phost "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/host"
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
|
p2phost "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/host"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var log = logging.Logger("mockrouter")
|
var log = logging.Logger("mockrouter")
|
||||||
@ -29,12 +30,12 @@ func (c *nilclient) GetValues(_ context.Context, _ key.Key, _ int) ([]routing.Re
|
|||||||
return nil, errors.New("Tried GetValues from nil routing.")
|
return nil, errors.New("Tried GetValues from nil routing.")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *nilclient) FindPeer(_ context.Context, _ peer.ID) (peer.PeerInfo, error) {
|
func (c *nilclient) FindPeer(_ context.Context, _ peer.ID) (pstore.PeerInfo, error) {
|
||||||
return peer.PeerInfo{}, nil
|
return pstore.PeerInfo{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *nilclient) FindProvidersAsync(_ context.Context, _ key.Key, _ int) <-chan peer.PeerInfo {
|
func (c *nilclient) FindProvidersAsync(_ context.Context, _ key.Key, _ int) <-chan pstore.PeerInfo {
|
||||||
out := make(chan peer.PeerInfo)
|
out := make(chan pstore.PeerInfo)
|
||||||
defer close(out)
|
defer close(out)
|
||||||
return out
|
return out
|
||||||
}
|
}
|
||||||
|
@ -9,11 +9,13 @@ import (
|
|||||||
routing "github.com/ipfs/go-ipfs/routing"
|
routing "github.com/ipfs/go-ipfs/routing"
|
||||||
pb "github.com/ipfs/go-ipfs/routing/dht/pb"
|
pb "github.com/ipfs/go-ipfs/routing/dht/pb"
|
||||||
record "github.com/ipfs/go-ipfs/routing/record"
|
record "github.com/ipfs/go-ipfs/routing/record"
|
||||||
|
|
||||||
|
"gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
ci "gx/ipfs/QmUEUu1CM8bxBJxc3ZLojAi8evhTr4byQogWstABet79oY/go-libp2p-crypto"
|
ci "gx/ipfs/QmUEUu1CM8bxBJxc3ZLojAi8evhTr4byQogWstABet79oY/go-libp2p-crypto"
|
||||||
proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto"
|
proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
||||||
"gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var log = logging.Logger("offlinerouting")
|
var log = logging.Logger("offlinerouting")
|
||||||
@ -88,16 +90,16 @@ func (c *offlineRouting) GetValues(ctx context.Context, key key.Key, _ int) ([]r
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *offlineRouting) FindProviders(ctx context.Context, key key.Key) ([]peer.PeerInfo, error) {
|
func (c *offlineRouting) FindProviders(ctx context.Context, key key.Key) ([]pstore.PeerInfo, error) {
|
||||||
return nil, ErrOffline
|
return nil, ErrOffline
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *offlineRouting) FindPeer(ctx context.Context, pid peer.ID) (peer.PeerInfo, error) {
|
func (c *offlineRouting) FindPeer(ctx context.Context, pid peer.ID) (pstore.PeerInfo, error) {
|
||||||
return peer.PeerInfo{}, ErrOffline
|
return pstore.PeerInfo{}, ErrOffline
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *offlineRouting) FindProvidersAsync(ctx context.Context, k key.Key, max int) <-chan peer.PeerInfo {
|
func (c *offlineRouting) FindProvidersAsync(ctx context.Context, k key.Key, max int) <-chan pstore.PeerInfo {
|
||||||
out := make(chan peer.PeerInfo)
|
out := make(chan pstore.PeerInfo)
|
||||||
close(out)
|
close(out)
|
||||||
return out
|
return out
|
||||||
}
|
}
|
||||||
|
@ -5,9 +5,10 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
key "github.com/ipfs/go-ipfs/blocks/key"
|
key "github.com/ipfs/go-ipfs/blocks/key"
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
ci "gx/ipfs/QmUEUu1CM8bxBJxc3ZLojAi8evhTr4byQogWstABet79oY/go-libp2p-crypto"
|
ci "gx/ipfs/QmUEUu1CM8bxBJxc3ZLojAi8evhTr4byQogWstABet79oY/go-libp2p-crypto"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// ErrNotFound is returned when a search fails to find anything
|
// ErrNotFound is returned when a search fails to find anything
|
||||||
@ -16,7 +17,7 @@ var ErrNotFound = errors.New("routing: not found")
|
|||||||
// IpfsRouting is the routing module interface
|
// IpfsRouting is the routing module interface
|
||||||
// It is implemented by things like DHTs, etc.
|
// It is implemented by things like DHTs, etc.
|
||||||
type IpfsRouting interface {
|
type IpfsRouting interface {
|
||||||
FindProvidersAsync(context.Context, key.Key, int) <-chan peer.PeerInfo
|
FindProvidersAsync(context.Context, key.Key, int) <-chan pstore.PeerInfo
|
||||||
|
|
||||||
// Basic Put/Get
|
// Basic Put/Get
|
||||||
|
|
||||||
@ -45,9 +46,9 @@ type IpfsRouting interface {
|
|||||||
Provide(context.Context, key.Key) error
|
Provide(context.Context, key.Key) error
|
||||||
|
|
||||||
// Find specific Peer
|
// Find specific Peer
|
||||||
// FindPeer searches for a peer with given ID, returns a peer.PeerInfo
|
// FindPeer searches for a peer with given ID, returns a pstore.PeerInfo
|
||||||
// with relevant addresses.
|
// with relevant addresses.
|
||||||
FindPeer(context.Context, peer.ID) (peer.PeerInfo, error)
|
FindPeer(context.Context, peer.ID) (pstore.PeerInfo, error)
|
||||||
|
|
||||||
// Bootstrap allows callers to hint to the routing system to get into a
|
// Bootstrap allows callers to hint to the routing system to get into a
|
||||||
// Boostrapped state
|
// Boostrapped state
|
||||||
|
@ -5,31 +5,31 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto"
|
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
|
||||||
|
|
||||||
"gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/host"
|
|
||||||
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
|
|
||||||
key "github.com/ipfs/go-ipfs/blocks/key"
|
key "github.com/ipfs/go-ipfs/blocks/key"
|
||||||
routing "github.com/ipfs/go-ipfs/routing"
|
routing "github.com/ipfs/go-ipfs/routing"
|
||||||
pb "github.com/ipfs/go-ipfs/routing/dht/pb"
|
pb "github.com/ipfs/go-ipfs/routing/dht/pb"
|
||||||
proxy "github.com/ipfs/go-ipfs/routing/supernode/proxy"
|
proxy "github.com/ipfs/go-ipfs/routing/supernode/proxy"
|
||||||
loggables "github.com/ipfs/go-ipfs/thirdparty/loggables"
|
loggables "github.com/ipfs/go-ipfs/thirdparty/loggables"
|
||||||
|
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
|
"gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/host"
|
||||||
|
proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
|
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
||||||
)
|
)
|
||||||
|
|
||||||
var log = logging.Logger("supernode")
|
var log = logging.Logger("supernode")
|
||||||
|
|
||||||
type Client struct {
|
type Client struct {
|
||||||
peerhost host.Host
|
peerhost host.Host
|
||||||
peerstore peer.Peerstore
|
peerstore pstore.Peerstore
|
||||||
proxy proxy.Proxy
|
proxy proxy.Proxy
|
||||||
local peer.ID
|
local peer.ID
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO take in datastore/cache
|
// TODO take in datastore/cache
|
||||||
func NewClient(px proxy.Proxy, h host.Host, ps peer.Peerstore, local peer.ID) (*Client, error) {
|
func NewClient(px proxy.Proxy, h host.Host, ps pstore.Peerstore, local peer.ID) (*Client, error) {
|
||||||
return &Client{
|
return &Client{
|
||||||
proxy: px,
|
proxy: px,
|
||||||
local: local,
|
local: local,
|
||||||
@ -38,10 +38,10 @@ func NewClient(px proxy.Proxy, h host.Host, ps peer.Peerstore, local peer.ID) (*
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) FindProvidersAsync(ctx context.Context, k key.Key, max int) <-chan peer.PeerInfo {
|
func (c *Client) FindProvidersAsync(ctx context.Context, k key.Key, max int) <-chan pstore.PeerInfo {
|
||||||
logging.ContextWithLoggable(ctx, loggables.Uuid("findProviders"))
|
logging.ContextWithLoggable(ctx, loggables.Uuid("findProviders"))
|
||||||
defer log.EventBegin(ctx, "findProviders", &k).Done()
|
defer log.EventBegin(ctx, "findProviders", &k).Done()
|
||||||
ch := make(chan peer.PeerInfo)
|
ch := make(chan pstore.PeerInfo)
|
||||||
go func() {
|
go func() {
|
||||||
defer close(ch)
|
defer close(ch)
|
||||||
request := pb.NewMessage(pb.Message_GET_PROVIDERS, string(k), 0)
|
request := pb.NewMessage(pb.Message_GET_PROVIDERS, string(k), 0)
|
||||||
@ -105,7 +105,7 @@ func (c *Client) Provide(ctx context.Context, k key.Key) error {
|
|||||||
// FIXME how is connectedness defined for the local node
|
// FIXME how is connectedness defined for the local node
|
||||||
pri := []pb.PeerRoutingInfo{
|
pri := []pb.PeerRoutingInfo{
|
||||||
{
|
{
|
||||||
PeerInfo: peer.PeerInfo{
|
PeerInfo: pstore.PeerInfo{
|
||||||
ID: c.local,
|
ID: c.local,
|
||||||
Addrs: c.peerhost.Addrs(),
|
Addrs: c.peerhost.Addrs(),
|
||||||
},
|
},
|
||||||
@ -115,23 +115,23 @@ func (c *Client) Provide(ctx context.Context, k key.Key) error {
|
|||||||
return c.proxy.SendMessage(ctx, msg) // TODO wrap to hide remote
|
return c.proxy.SendMessage(ctx, msg) // TODO wrap to hide remote
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) FindPeer(ctx context.Context, id peer.ID) (peer.PeerInfo, error) {
|
func (c *Client) FindPeer(ctx context.Context, id peer.ID) (pstore.PeerInfo, error) {
|
||||||
defer log.EventBegin(ctx, "findPeer", id).Done()
|
defer log.EventBegin(ctx, "findPeer", id).Done()
|
||||||
request := pb.NewMessage(pb.Message_FIND_NODE, string(id), 0)
|
request := pb.NewMessage(pb.Message_FIND_NODE, string(id), 0)
|
||||||
response, err := c.proxy.SendRequest(ctx, request) // hide remote
|
response, err := c.proxy.SendRequest(ctx, request) // hide remote
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return peer.PeerInfo{}, err
|
return pstore.PeerInfo{}, err
|
||||||
}
|
}
|
||||||
for _, p := range pb.PBPeersToPeerInfos(response.GetCloserPeers()) {
|
for _, p := range pb.PBPeersToPeerInfos(response.GetCloserPeers()) {
|
||||||
if p.ID == id {
|
if p.ID == id {
|
||||||
return p, nil
|
return p, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return peer.PeerInfo{}, errors.New("could not find peer")
|
return pstore.PeerInfo{}, errors.New("could not find peer")
|
||||||
}
|
}
|
||||||
|
|
||||||
// creates and signs a record for the given key/value pair
|
// creates and signs a record for the given key/value pair
|
||||||
func makeRecord(ps peer.Peerstore, p peer.ID, k key.Key, v []byte) (*pb.Record, error) {
|
func makeRecord(ps pstore.Peerstore, p peer.ID, k key.Key, v []byte) (*pb.Record, error) {
|
||||||
blob := bytes.Join([][]byte{[]byte(k), v, []byte(p)}, []byte{})
|
blob := bytes.Join([][]byte{[]byte(k), v, []byte(p)}, []byte{})
|
||||||
sig, err := ps.PrivKey(p).Sign(blob)
|
sig, err := ps.PrivKey(p).Sign(blob)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -5,8 +5,8 @@ import (
|
|||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
|
|
||||||
dhtpb "github.com/ipfs/go-ipfs/routing/dht/pb"
|
dhtpb "github.com/ipfs/go-ipfs/routing/dht/pb"
|
||||||
inet "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net"
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
inet "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net"
|
||||||
)
|
)
|
||||||
|
|
||||||
// RequestHandler handles routing requests locally
|
// RequestHandler handles routing requests locally
|
||||||
|
@ -6,10 +6,11 @@ import (
|
|||||||
ggio "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/io"
|
ggio "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/io"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
|
|
||||||
host "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/host"
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
inet "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net"
|
host "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/host"
|
||||||
|
inet "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
|
|
||||||
key "github.com/ipfs/go-ipfs/blocks/key"
|
key "github.com/ipfs/go-ipfs/blocks/key"
|
||||||
dhtpb "github.com/ipfs/go-ipfs/routing/dht/pb"
|
dhtpb "github.com/ipfs/go-ipfs/routing/dht/pb"
|
||||||
@ -31,11 +32,11 @@ type Proxy interface {
|
|||||||
type standard struct {
|
type standard struct {
|
||||||
Host host.Host
|
Host host.Host
|
||||||
|
|
||||||
remoteInfos []peer.PeerInfo // addr required for bootstrapping
|
remoteInfos []pstore.PeerInfo // addr required for bootstrapping
|
||||||
remoteIDs []peer.ID // []ID is required for each req. here, cached for performance.
|
remoteIDs []peer.ID // []ID is required for each req. here, cached for performance.
|
||||||
}
|
}
|
||||||
|
|
||||||
func Standard(h host.Host, remotes []peer.PeerInfo) Proxy {
|
func Standard(h host.Host, remotes []pstore.PeerInfo) Proxy {
|
||||||
var ids []peer.ID
|
var ids []peer.ID
|
||||||
for _, remote := range remotes {
|
for _, remote := range remotes {
|
||||||
ids = append(ids, remote.ID)
|
ids = append(ids, remote.ID)
|
||||||
@ -44,7 +45,7 @@ func Standard(h host.Host, remotes []peer.PeerInfo) Proxy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (px *standard) Bootstrap(ctx context.Context) error {
|
func (px *standard) Bootstrap(ctx context.Context) error {
|
||||||
var cxns []peer.PeerInfo
|
var cxns []pstore.PeerInfo
|
||||||
for _, info := range px.remoteInfos {
|
for _, info := range px.remoteInfos {
|
||||||
if err := px.Host.Connect(ctx, info); err != nil {
|
if err := px.Host.Connect(ctx, info); err != nil {
|
||||||
continue
|
continue
|
||||||
@ -97,7 +98,7 @@ func (px *standard) sendMessage(ctx context.Context, m *dhtpb.Message, remote pe
|
|||||||
}
|
}
|
||||||
e.Done()
|
e.Done()
|
||||||
}()
|
}()
|
||||||
if err = px.Host.Connect(ctx, peer.PeerInfo{ID: remote}); err != nil {
|
if err = px.Host.Connect(ctx, pstore.PeerInfo{ID: remote}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
s, err := px.Host.NewStream(ctx, ProtocolSNR, remote)
|
s, err := px.Host.NewStream(ctx, ProtocolSNR, remote)
|
||||||
@ -131,7 +132,7 @@ func (px *standard) SendRequest(ctx context.Context, m *dhtpb.Message) (*dhtpb.M
|
|||||||
func (px *standard) sendRequest(ctx context.Context, m *dhtpb.Message, remote peer.ID) (*dhtpb.Message, error) {
|
func (px *standard) sendRequest(ctx context.Context, m *dhtpb.Message, remote peer.ID) (*dhtpb.Message, error) {
|
||||||
e := log.EventBegin(ctx, "sendRoutingRequest", px.Host.ID(), remote, logging.Pair("request", m))
|
e := log.EventBegin(ctx, "sendRoutingRequest", px.Host.ID(), remote, logging.Pair("request", m))
|
||||||
defer e.Done()
|
defer e.Done()
|
||||||
if err := px.Host.Connect(ctx, peer.PeerInfo{ID: remote}); err != nil {
|
if err := px.Host.Connect(ctx, pstore.PeerInfo{ID: remote}); err != nil {
|
||||||
e.SetError(err)
|
e.SetError(err)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -5,26 +5,27 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
datastore "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/ipfs/go-datastore"
|
datastore "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/ipfs/go-datastore"
|
||||||
proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto"
|
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
|
||||||
|
|
||||||
key "github.com/ipfs/go-ipfs/blocks/key"
|
key "github.com/ipfs/go-ipfs/blocks/key"
|
||||||
dhtpb "github.com/ipfs/go-ipfs/routing/dht/pb"
|
dhtpb "github.com/ipfs/go-ipfs/routing/dht/pb"
|
||||||
record "github.com/ipfs/go-ipfs/routing/record"
|
record "github.com/ipfs/go-ipfs/routing/record"
|
||||||
proxy "github.com/ipfs/go-ipfs/routing/supernode/proxy"
|
proxy "github.com/ipfs/go-ipfs/routing/supernode/proxy"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
|
proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Server handles routing queries using a database backend
|
// Server handles routing queries using a database backend
|
||||||
type Server struct {
|
type Server struct {
|
||||||
local peer.ID
|
local peer.ID
|
||||||
routingBackend datastore.Datastore
|
routingBackend datastore.Datastore
|
||||||
peerstore peer.Peerstore
|
peerstore pstore.Peerstore
|
||||||
*proxy.Loopback // so server can be injected into client
|
*proxy.Loopback // so server can be injected into client
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewServer creates a new Supernode routing Server
|
// NewServer creates a new Supernode routing Server
|
||||||
func NewServer(ds datastore.Datastore, ps peer.Peerstore, local peer.ID) (*Server, error) {
|
func NewServer(ds datastore.Datastore, ps pstore.Peerstore, local peer.ID) (*Server, error) {
|
||||||
s := &Server{local, ds, ps, nil}
|
s := &Server{local, ds, ps, nil}
|
||||||
s.Loopback = &proxy.Loopback{
|
s.Loopback = &proxy.Loopback{
|
||||||
Handler: s,
|
Handler: s,
|
||||||
@ -169,7 +170,7 @@ func putRoutingProviders(ds datastore.Datastore, k key.Key, newRecords []*dhtpb.
|
|||||||
return ds.Put(providerKey(k), data)
|
return ds.Put(providerKey(k), data)
|
||||||
}
|
}
|
||||||
|
|
||||||
func storeProvidersToPeerstore(ps peer.Peerstore, p peer.ID, providers []*dhtpb.Message_Peer) {
|
func storeProvidersToPeerstore(ps pstore.Peerstore, p peer.ID, providers []*dhtpb.Message_Peer) {
|
||||||
for _, provider := range providers {
|
for _, provider := range providers {
|
||||||
providerID := peer.ID(provider.GetId())
|
providerID := peer.ID(provider.GetId())
|
||||||
if providerID != p {
|
if providerID != p {
|
||||||
@ -178,7 +179,7 @@ func storeProvidersToPeerstore(ps peer.Peerstore, p peer.ID, providers []*dhtpb.
|
|||||||
}
|
}
|
||||||
for _, maddr := range provider.Addresses() {
|
for _, maddr := range provider.Addresses() {
|
||||||
// as a router, we want to store addresses for peers who have provided
|
// as a router, we want to store addresses for peers who have provided
|
||||||
ps.AddAddr(p, maddr, peer.AddressTTL)
|
ps.AddAddr(p, maddr, pstore.AddressTTL)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -203,7 +204,7 @@ func providerKey(k key.Key) datastore.Key {
|
|||||||
return datastore.KeyWithNamespaces([]string{"routing", "providers", k.String()})
|
return datastore.KeyWithNamespaces([]string{"routing", "providers", k.String()})
|
||||||
}
|
}
|
||||||
|
|
||||||
func verify(ps peer.Peerstore, r *dhtpb.Record) error {
|
func verify(ps pstore.Peerstore, r *dhtpb.Record) error {
|
||||||
v := make(record.Validator)
|
v := make(record.Validator)
|
||||||
v["pk"] = record.PublicKeyValidator
|
v["pk"] = record.PublicKeyValidator
|
||||||
p := peer.ID(r.GetAuthor())
|
p := peer.ID(r.GetAuthor())
|
||||||
|
@ -18,9 +18,9 @@ import (
|
|||||||
mock "github.com/ipfs/go-ipfs/core/mock"
|
mock "github.com/ipfs/go-ipfs/core/mock"
|
||||||
testutil "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
testutil "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
||||||
"github.com/ipfs/go-ipfs/thirdparty/unit"
|
"github.com/ipfs/go-ipfs/thirdparty/unit"
|
||||||
mocknet "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net/mock"
|
mocknet "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net/mock"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
||||||
"gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var log = logging.Logger("epictest")
|
var log = logging.Logger("epictest")
|
||||||
@ -123,8 +123,8 @@ func DirectAddCat(data []byte, conf testutil.LatencyConfig) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
bs1 := []peer.PeerInfo{adder.Peerstore.PeerInfo(adder.Identity)}
|
bs1 := []pstore.PeerInfo{adder.Peerstore.PeerInfo(adder.Identity)}
|
||||||
bs2 := []peer.PeerInfo{catter.Peerstore.PeerInfo(catter.Identity)}
|
bs2 := []pstore.PeerInfo{catter.Peerstore.PeerInfo(catter.Identity)}
|
||||||
|
|
||||||
if err := catter.Bootstrap(core.BootstrapConfigWithPeers(bs1)); err != nil {
|
if err := catter.Bootstrap(core.BootstrapConfigWithPeers(bs1)); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -12,9 +12,9 @@ import (
|
|||||||
mock "github.com/ipfs/go-ipfs/core/mock"
|
mock "github.com/ipfs/go-ipfs/core/mock"
|
||||||
testutil "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
testutil "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
||||||
"github.com/ipfs/go-ipfs/thirdparty/unit"
|
"github.com/ipfs/go-ipfs/thirdparty/unit"
|
||||||
mocknet "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net/mock"
|
mocknet "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net/mock"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
"gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func BenchmarkCat1MB(b *testing.B) { benchmarkVarCat(b, unit.MB*1) }
|
func BenchmarkCat1MB(b *testing.B) { benchmarkVarCat(b, unit.MB*1) }
|
||||||
@ -68,8 +68,8 @@ func benchCat(b *testing.B, data []byte, conf testutil.LatencyConfig) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
bs1 := []peer.PeerInfo{adder.Peerstore.PeerInfo(adder.Identity)}
|
bs1 := []pstore.PeerInfo{adder.Peerstore.PeerInfo(adder.Identity)}
|
||||||
bs2 := []peer.PeerInfo{catter.Peerstore.PeerInfo(catter.Identity)}
|
bs2 := []pstore.PeerInfo{catter.Peerstore.PeerInfo(catter.Identity)}
|
||||||
|
|
||||||
if err := catter.Bootstrap(core.BootstrapConfigWithPeers(bs1)); err != nil {
|
if err := catter.Bootstrap(core.BootstrapConfigWithPeers(bs1)); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -7,7 +7,7 @@ import (
|
|||||||
"github.com/ipfs/go-ipfs/blocks"
|
"github.com/ipfs/go-ipfs/blocks"
|
||||||
"github.com/ipfs/go-ipfs/core"
|
"github.com/ipfs/go-ipfs/core"
|
||||||
"github.com/ipfs/go-ipfs/core/mock"
|
"github.com/ipfs/go-ipfs/core/mock"
|
||||||
mocknet "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net/mock"
|
mocknet "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net/mock"
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -20,8 +20,8 @@ import (
|
|||||||
ds2 "github.com/ipfs/go-ipfs/thirdparty/datastore2"
|
ds2 "github.com/ipfs/go-ipfs/thirdparty/datastore2"
|
||||||
testutil "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
testutil "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
||||||
"github.com/ipfs/go-ipfs/thirdparty/unit"
|
"github.com/ipfs/go-ipfs/thirdparty/unit"
|
||||||
mocknet "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net/mock"
|
mocknet "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net/mock"
|
||||||
"gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestSupernodeBootstrappedAddCat(t *testing.T) {
|
func TestSupernodeBootstrappedAddCat(t *testing.T) {
|
||||||
@ -103,7 +103,7 @@ func InitializeSupernodeNetwork(
|
|||||||
servers = append(servers, bootstrap)
|
servers = append(servers, bootstrap)
|
||||||
}
|
}
|
||||||
|
|
||||||
var bootstrapInfos []peer.PeerInfo
|
var bootstrapInfos []pstore.PeerInfo
|
||||||
for _, n := range servers {
|
for _, n := range servers {
|
||||||
info := n.Peerstore.PeerInfo(n.PeerHost.ID())
|
info := n.Peerstore.PeerInfo(n.PeerHost.ID())
|
||||||
bootstrapInfos = append(bootstrapInfos, info)
|
bootstrapInfos = append(bootstrapInfos, info)
|
||||||
|
@ -15,8 +15,8 @@ import (
|
|||||||
mock "github.com/ipfs/go-ipfs/core/mock"
|
mock "github.com/ipfs/go-ipfs/core/mock"
|
||||||
testutil "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
testutil "github.com/ipfs/go-ipfs/thirdparty/testutil"
|
||||||
"github.com/ipfs/go-ipfs/thirdparty/unit"
|
"github.com/ipfs/go-ipfs/thirdparty/unit"
|
||||||
mocknet "gx/ipfs/QmRW2xiYTpDLWTHb822ZYbPBoh3dGLJwaXLGS9tnPyWZpq/go-libp2p/p2p/net/mock"
|
mocknet "gx/ipfs/QmQgQeBQxQmJdeUSaDagc8cr2ompDwGn13Cybjdtzfuaki/go-libp2p/p2p/net/mock"
|
||||||
"gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestThreeLeggedCatTransfer(t *testing.T) {
|
func TestThreeLeggedCatTransfer(t *testing.T) {
|
||||||
@ -104,7 +104,7 @@ func RunThreeLeggedCat(data []byte, conf testutil.LatencyConfig) error {
|
|||||||
mn.LinkAll()
|
mn.LinkAll()
|
||||||
|
|
||||||
bis := bootstrap.Peerstore.PeerInfo(bootstrap.PeerHost.ID())
|
bis := bootstrap.Peerstore.PeerInfo(bootstrap.PeerHost.ID())
|
||||||
bcfg := core.BootstrapConfigWithPeers([]peer.PeerInfo{bis})
|
bcfg := core.BootstrapConfigWithPeers([]pstore.PeerInfo{bis})
|
||||||
if err := adder.Bootstrap(bcfg); err != nil {
|
if err := adder.Bootstrap(bcfg); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -12,13 +12,9 @@ import (
|
|||||||
gopath "path"
|
gopath "path"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
random "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-random"
|
|
||||||
"github.com/ipfs/go-ipfs/thirdparty/ipfsaddr"
|
|
||||||
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
|
|
||||||
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
|
||||||
|
|
||||||
"github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/ipfs/go-datastore"
|
"github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/ipfs/go-datastore"
|
||||||
syncds "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/ipfs/go-datastore/sync"
|
syncds "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/ipfs/go-datastore/sync"
|
||||||
|
random "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-random"
|
||||||
commands "github.com/ipfs/go-ipfs/commands"
|
commands "github.com/ipfs/go-ipfs/commands"
|
||||||
core "github.com/ipfs/go-ipfs/core"
|
core "github.com/ipfs/go-ipfs/core"
|
||||||
corehttp "github.com/ipfs/go-ipfs/core/corehttp"
|
corehttp "github.com/ipfs/go-ipfs/core/corehttp"
|
||||||
@ -28,9 +24,13 @@ import (
|
|||||||
config "github.com/ipfs/go-ipfs/repo/config"
|
config "github.com/ipfs/go-ipfs/repo/config"
|
||||||
fsrepo "github.com/ipfs/go-ipfs/repo/fsrepo"
|
fsrepo "github.com/ipfs/go-ipfs/repo/fsrepo"
|
||||||
ds2 "github.com/ipfs/go-ipfs/thirdparty/datastore2"
|
ds2 "github.com/ipfs/go-ipfs/thirdparty/datastore2"
|
||||||
|
"github.com/ipfs/go-ipfs/thirdparty/ipfsaddr"
|
||||||
unit "github.com/ipfs/go-ipfs/thirdparty/unit"
|
unit "github.com/ipfs/go-ipfs/thirdparty/unit"
|
||||||
|
|
||||||
|
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
|
||||||
|
pstore "gx/ipfs/QmZ62t46e9p7vMYqCmptwQC1RhRv5cpQ5cwoqYspedaXyq/go-libp2p-peerstore"
|
||||||
|
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
|
||||||
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var elog = logging.Logger("gc-client")
|
var elog = logging.Logger("gc-client")
|
||||||
@ -89,9 +89,9 @@ func run() error {
|
|||||||
addrs = append(addrs, addr)
|
addrs = append(addrs, addr)
|
||||||
}
|
}
|
||||||
|
|
||||||
var infos []peer.PeerInfo
|
var infos []pstore.PeerInfo
|
||||||
for _, addr := range addrs {
|
for _, addr := range addrs {
|
||||||
infos = append(infos, peer.PeerInfo{
|
infos = append(infos, pstore.PeerInfo{
|
||||||
ID: addr.ID(),
|
ID: addr.ID(),
|
||||||
Addrs: []ma.Multiaddr{addr.Transport()},
|
Addrs: []ma.Multiaddr{addr.Transport()},
|
||||||
})
|
})
|
||||||
@ -233,8 +233,8 @@ func runFileCattingWorker(ctx context.Context, n *core.IpfsNode) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func toPeerInfos(bpeers []config.BootstrapPeer) ([]peer.PeerInfo, error) {
|
func toPeerInfos(bpeers []config.BootstrapPeer) ([]pstore.PeerInfo, error) {
|
||||||
var peers []peer.PeerInfo
|
var peers []pstore.PeerInfo
|
||||||
for _, bootstrap := range bpeers {
|
for _, bootstrap := range bpeers {
|
||||||
p, err := toPeerInfo(bootstrap)
|
p, err := toPeerInfo(bootstrap)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -245,8 +245,8 @@ func toPeerInfos(bpeers []config.BootstrapPeer) ([]peer.PeerInfo, error) {
|
|||||||
return peers, nil
|
return peers, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func toPeerInfo(bootstrap config.BootstrapPeer) (p peer.PeerInfo, err error) {
|
func toPeerInfo(bootstrap config.BootstrapPeer) (p pstore.PeerInfo, err error) {
|
||||||
p = peer.PeerInfo{
|
p = pstore.PeerInfo{
|
||||||
ID: bootstrap.ID(),
|
ID: bootstrap.ID(),
|
||||||
Addrs: []ma.Multiaddr{bootstrap.Multiaddr()},
|
Addrs: []ma.Multiaddr{bootstrap.Multiaddr()},
|
||||||
}
|
}
|
||||||
|
2
thirdparty/ipfsaddr/ipfsaddr.go
vendored
2
thirdparty/ipfsaddr/ipfsaddr.go
vendored
@ -6,8 +6,8 @@ import (
|
|||||||
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
|
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
|
||||||
|
|
||||||
path "github.com/ipfs/go-ipfs/path"
|
path "github.com/ipfs/go-ipfs/path"
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var log = logging.Logger("ipfsaddr")
|
var log = logging.Logger("ipfsaddr")
|
||||||
|
2
thirdparty/ipfsaddr/ipfsaddr_test.go
vendored
2
thirdparty/ipfsaddr/ipfsaddr_test.go
vendored
@ -4,8 +4,8 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
path "github.com/ipfs/go-ipfs/path"
|
path "github.com/ipfs/go-ipfs/path"
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
|
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var good = []string{
|
var good = []string{
|
||||||
|
2
thirdparty/loggables/loggables.go
vendored
2
thirdparty/loggables/loggables.go
vendored
@ -15,7 +15,7 @@ import (
|
|||||||
|
|
||||||
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
logging "gx/ipfs/QmaDNZ4QMdBdku1YZWBysufYyoQt1negQGNav6PLYarbY8/go-log"
|
||||||
|
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NetConn returns an eventlog.Metadata with the conn addresses
|
// NetConn returns an eventlog.Metadata with the conn addresses
|
||||||
|
2
thirdparty/peerset/peerset.go
vendored
2
thirdparty/peerset/peerset.go
vendored
@ -1,7 +1,7 @@
|
|||||||
package peerset
|
package peerset
|
||||||
|
|
||||||
import (
|
import (
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
2
thirdparty/testutil/gen.go
vendored
2
thirdparty/testutil/gen.go
vendored
@ -8,9 +8,9 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
ci "gx/ipfs/QmUEUu1CM8bxBJxc3ZLojAi8evhTr4byQogWstABet79oY/go-libp2p-crypto"
|
ci "gx/ipfs/QmUEUu1CM8bxBJxc3ZLojAi8evhTr4byQogWstABet79oY/go-libp2p-crypto"
|
||||||
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
|
|
||||||
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
|
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
|
||||||
)
|
)
|
||||||
|
2
thirdparty/testutil/identity.go
vendored
2
thirdparty/testutil/identity.go
vendored
@ -3,9 +3,9 @@ package testutil
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
peer "gx/ipfs/QmQGwpJy9P4yXZySmqkZEXCmbBpJUb8xntCv8Ca4taZwDC/go-libp2p-peer"
|
||||||
ci "gx/ipfs/QmUEUu1CM8bxBJxc3ZLojAi8evhTr4byQogWstABet79oY/go-libp2p-crypto"
|
ci "gx/ipfs/QmUEUu1CM8bxBJxc3ZLojAi8evhTr4byQogWstABet79oY/go-libp2p-crypto"
|
||||||
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
|
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr"
|
||||||
peer "gx/ipfs/QmbyvM8zRFDkbFdYyt1MnevUMJ62SiSGbfDFZ3Z8nkrzr4/go-libp2p-peer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type Identity interface {
|
type Identity interface {
|
||||||
|
Reference in New Issue
Block a user