Commit cbad7164 authored by Jeromy's avatar Jeromy

update to libp2p 4.0.1 and propogate other changes

License: MIT
Signed-off-by: default avatarJeromy <why@ipfs.io>
parent f8c488ed
package mockrouting package mockrouting
import ( import (
"context"
"errors" "errors"
"time" "time"
dshelp "github.com/ipfs/go-ipfs/thirdparty/ds-help"
"github.com/ipfs/go-ipfs/thirdparty/testutil" "github.com/ipfs/go-ipfs/thirdparty/testutil"
logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log" logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log"
peer "gx/ipfs/QmWXjJo15p4pzT7cayEwZi2sWgJqLnGDof6ZGMh9xBgU1p/go-libp2p-peer" ma "gx/ipfs/QmUAQaWbKxGCUTuoQVvvicbQNZ9APF5pDGWyAZSe93AtKH/go-multiaddr"
pstore "gx/ipfs/QmYkwVGkwoPbMVQEbf6LonZg4SsCxGP3H7PBEtdNCNRyxD/go-libp2p-peerstore" routing "gx/ipfs/QmXKuGUzLcgoQvp8M6ZEJzupWUNmx8NoqXEbYLMDjL4rjj/go-libp2p-routing"
ma "gx/ipfs/QmYzDkkgAEmrcNzFCiYo6L1dTX4EAG1gZkbtdbd9trL4vd/go-multiaddr" pstore "gx/ipfs/QmXXCcQ7CLg5a81Ui9TTR35QcR4y7ZyihxwfjqaHfUVcVo/go-libp2p-peerstore"
proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto" proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto"
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util" cid "gx/ipfs/QmakyCk6Vnn16WEKjbkxieZmM2YLTzkFWizbmGowoYPjro/go-cid"
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context" u "gx/ipfs/Qmb912gdngC1UWwTkhuW8knyRbcWeu5kqkxBpveLmW8bSr/go-ipfs-util"
ds "gx/ipfs/QmbzuUusHqaLLoNTDEVLcSF6vZDHZDLPC7p4bztRvvkXxU/go-datastore" ds "gx/ipfs/QmbzuUusHqaLLoNTDEVLcSF6vZDHZDLPC7p4bztRvvkXxU/go-datastore"
key "gx/ipfs/Qmce4Y4zg3sYr7xKM5UueS67vhNni6EeWgCRnb7MbLJMew/go-key" dhtpb "gx/ipfs/QmdM4ohF7cr4MvAECVeD3hRA3HtZrk1ngaek4n8ojVT87h/go-libp2p-record/pb"
dhtpb "gx/ipfs/Qme7D9iKHYxwq28p6PzCymywsYSRBx9uyGzW7qNB3s9VbC/go-libp2p-record/pb" peer "gx/ipfs/QmfMmLGoKzCHDN7cGgk64PJr4iipzidDRME8HABSJqvmhC/go-libp2p-peer"
routing "gx/ipfs/QmemZcG8WprPbnVX3AM43GhhSUiA3V6NjcTLAguvWzkdpQ/go-libp2p-routing"
) )
var log = logging.Logger("mockrouter") var log = logging.Logger("mockrouter")
...@@ -28,7 +29,7 @@ type client struct { ...@@ -28,7 +29,7 @@ type client struct {
} }
// FIXME(brian): is this method meant to simulate putting a value into the network? // FIXME(brian): is this method meant to simulate putting a value into the network?
func (c *client) PutValue(ctx context.Context, key key.Key, val []byte) error { func (c *client) PutValue(ctx context.Context, key string, val []byte) error {
log.Debugf("PutValue: %s", key) log.Debugf("PutValue: %s", key)
rec := new(dhtpb.Record) rec := new(dhtpb.Record)
rec.Value = val rec.Value = val
...@@ -39,13 +40,13 @@ func (c *client) PutValue(ctx context.Context, key key.Key, val []byte) error { ...@@ -39,13 +40,13 @@ func (c *client) PutValue(ctx context.Context, key key.Key, val []byte) error {
return err return err
} }
return c.datastore.Put(key.DsKey(), data) return c.datastore.Put(dshelp.NewKeyFromBinary(key), data)
} }
// FIXME(brian): is this method meant to simulate getting a value from the network? // FIXME(brian): is this method meant to simulate getting a value from the network?
func (c *client) GetValue(ctx context.Context, key key.Key) ([]byte, error) { func (c *client) GetValue(ctx context.Context, key string) ([]byte, error) {
log.Debugf("GetValue: %s", key) log.Debugf("GetValue: %s", key)
v, err := c.datastore.Get(key.DsKey()) v, err := c.datastore.Get(dshelp.NewKeyFromBinary(key))
if err != nil { if err != nil {
return nil, err return nil, err
} }
...@@ -64,7 +65,7 @@ func (c *client) GetValue(ctx context.Context, key key.Key) ([]byte, error) { ...@@ -64,7 +65,7 @@ func (c *client) GetValue(ctx context.Context, key key.Key) ([]byte, error) {
return rec.GetValue(), nil return rec.GetValue(), nil
} }
func (c *client) GetValues(ctx context.Context, key key.Key, count int) ([]routing.RecvdVal, error) { func (c *client) GetValues(ctx context.Context, key string, count int) ([]routing.RecvdVal, error) {
log.Debugf("GetValues: %s", key) log.Debugf("GetValues: %s", key)
data, err := c.GetValue(ctx, key) data, err := c.GetValue(ctx, key)
if err != nil { if err != nil {
...@@ -74,7 +75,7 @@ func (c *client) GetValues(ctx context.Context, key key.Key, count int) ([]routi ...@@ -74,7 +75,7 @@ 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) ([]pstore.PeerInfo, error) { func (c *client) FindProviders(ctx context.Context, key *cid.Cid) ([]pstore.PeerInfo, error) {
return c.server.Providers(key), nil return c.server.Providers(key), nil
} }
...@@ -83,7 +84,7 @@ func (c *client) FindPeer(ctx context.Context, pid peer.ID) (pstore.PeerInfo, er ...@@ -83,7 +84,7 @@ func (c *client) FindPeer(ctx context.Context, pid peer.ID) (pstore.PeerInfo, er
return pstore.PeerInfo{}, nil return pstore.PeerInfo{}, nil
} }
func (c *client) FindProvidersAsync(ctx context.Context, k key.Key, max int) <-chan pstore.PeerInfo { func (c *client) FindProvidersAsync(ctx context.Context, k *cid.Cid, max int) <-chan pstore.PeerInfo {
out := make(chan pstore.PeerInfo) out := make(chan pstore.PeerInfo)
go func() { go func() {
defer close(out) defer close(out)
...@@ -103,7 +104,7 @@ func (c *client) FindProvidersAsync(ctx context.Context, k key.Key, max int) <-c ...@@ -103,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 *cid.Cid) error {
info := pstore.PeerInfo{ info := pstore.PeerInfo{
ID: c.peer.ID(), ID: c.peer.ID(),
Addrs: []ma.Multiaddr{c.peer.Address()}, Addrs: []ma.Multiaddr{c.peer.Address()},
......
package mockrouting package mockrouting
import ( import (
"context"
"math/rand" "math/rand"
"sync" "sync"
"time" "time"
"github.com/ipfs/go-ipfs/thirdparty/testutil" "github.com/ipfs/go-ipfs/thirdparty/testutil"
pstore "gx/ipfs/QmXXCcQ7CLg5a81Ui9TTR35QcR4y7ZyihxwfjqaHfUVcVo/go-libp2p-peerstore"
cid "gx/ipfs/QmakyCk6Vnn16WEKjbkxieZmM2YLTzkFWizbmGowoYPjro/go-cid"
ds "gx/ipfs/QmbzuUusHqaLLoNTDEVLcSF6vZDHZDLPC7p4bztRvvkXxU/go-datastore" ds "gx/ipfs/QmbzuUusHqaLLoNTDEVLcSF6vZDHZDLPC7p4bztRvvkXxU/go-datastore"
dssync "gx/ipfs/QmbzuUusHqaLLoNTDEVLcSF6vZDHZDLPC7p4bztRvvkXxU/go-datastore/sync" dssync "gx/ipfs/QmbzuUusHqaLLoNTDEVLcSF6vZDHZDLPC7p4bztRvvkXxU/go-datastore/sync"
key "gx/ipfs/Qmce4Y4zg3sYr7xKM5UueS67vhNni6EeWgCRnb7MbLJMew/go-key" peer "gx/ipfs/QmfMmLGoKzCHDN7cGgk64PJr4iipzidDRME8HABSJqvmhC/go-libp2p-peer"
peer "gx/ipfs/QmWXjJo15p4pzT7cayEwZi2sWgJqLnGDof6ZGMh9xBgU1p/go-libp2p-peer"
pstore "gx/ipfs/QmYkwVGkwoPbMVQEbf6LonZg4SsCxGP3H7PBEtdNCNRyxD/go-libp2p-peerstore"
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
) )
// 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(pstore.PeerInfo, key.Key) error Announce(pstore.PeerInfo, *cid.Cid) error
Providers(key.Key) []pstore.PeerInfo Providers(*cid.Cid) []pstore.PeerInfo
Server Server
} }
...@@ -28,7 +28,7 @@ type s struct { ...@@ -28,7 +28,7 @@ type s struct {
delayConf DelayConfig delayConf DelayConfig
lock sync.RWMutex lock sync.RWMutex
providers map[key.Key]map[peer.ID]providerRecord providers map[string]map[peer.ID]providerRecord
} }
type providerRecord struct { type providerRecord struct {
...@@ -36,10 +36,12 @@ type providerRecord struct { ...@@ -36,10 +36,12 @@ type providerRecord struct {
Created time.Time Created time.Time
} }
func (rs *s) Announce(p pstore.PeerInfo, k key.Key) error { func (rs *s) Announce(p pstore.PeerInfo, c *cid.Cid) error {
rs.lock.Lock() rs.lock.Lock()
defer rs.lock.Unlock() defer rs.lock.Unlock()
k := c.KeyString()
_, ok := rs.providers[k] _, ok := rs.providers[k]
if !ok { if !ok {
rs.providers[k] = make(map[peer.ID]providerRecord) rs.providers[k] = make(map[peer.ID]providerRecord)
...@@ -51,11 +53,12 @@ func (rs *s) Announce(p pstore.PeerInfo, k key.Key) error { ...@@ -51,11 +53,12 @@ func (rs *s) Announce(p pstore.PeerInfo, k key.Key) error {
return nil return nil
} }
func (rs *s) Providers(k key.Key) []pstore.PeerInfo { func (rs *s) Providers(c *cid.Cid) []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()
k := c.KeyString()
var ret []pstore.PeerInfo var ret []pstore.PeerInfo
records, ok := rs.providers[k] records, ok := rs.providers[k]
......
package mockrouting package mockrouting
import ( import (
"context"
"testing" "testing"
"time" "time"
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"
key "gx/ipfs/Qmce4Y4zg3sYr7xKM5UueS67vhNni6EeWgCRnb7MbLJMew/go-key"
pstore "gx/ipfs/QmYkwVGkwoPbMVQEbf6LonZg4SsCxGP3H7PBEtdNCNRyxD/go-libp2p-peerstore" pstore "gx/ipfs/QmXXCcQ7CLg5a81Ui9TTR35QcR4y7ZyihxwfjqaHfUVcVo/go-libp2p-peerstore"
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context" cid "gx/ipfs/QmakyCk6Vnn16WEKjbkxieZmM2YLTzkFWizbmGowoYPjro/go-cid"
u "gx/ipfs/Qmb912gdngC1UWwTkhuW8knyRbcWeu5kqkxBpveLmW8bSr/go-ipfs-util"
) )
func TestKeyNotFound(t *testing.T) { func TestKeyNotFound(t *testing.T) {
var pi = testutil.RandIdentityOrFatal(t) var pi = testutil.RandIdentityOrFatal(t)
var key = key.Key("mock key") var key = cid.NewCidV0(u.Hash([]byte("mock key")))
var ctx = context.Background() var ctx = context.Background()
rs := NewServer() rs := NewServer()
...@@ -31,7 +32,7 @@ func TestClientFindProviders(t *testing.T) { ...@@ -31,7 +32,7 @@ func TestClientFindProviders(t *testing.T) {
rs := NewServer() rs := NewServer()
client := rs.Client(pi) client := rs.Client(pi)
k := key.Key("hello") k := cid.NewCidV0(u.Hash([]byte("hello")))
err := client.Provide(context.Background(), k) err := client.Provide(context.Background(), k)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
...@@ -41,7 +42,7 @@ func TestClientFindProviders(t *testing.T) { ...@@ -41,7 +42,7 @@ func TestClientFindProviders(t *testing.T) {
time.Sleep(time.Millisecond * 300) time.Sleep(time.Millisecond * 300)
max := 100 max := 100
providersFromClient := client.FindProvidersAsync(context.Background(), key.Key("hello"), max) providersFromClient := client.FindProvidersAsync(context.Background(), k, max)
isInClient := false isInClient := false
for pi := range providersFromClient { for pi := range providersFromClient {
if pi.ID == pi.ID { if pi.ID == pi.ID {
...@@ -55,7 +56,7 @@ func TestClientFindProviders(t *testing.T) { ...@@ -55,7 +56,7 @@ func TestClientFindProviders(t *testing.T) {
func TestClientOverMax(t *testing.T) { func TestClientOverMax(t *testing.T) {
rs := NewServer() rs := NewServer()
k := key.Key("hello") k := cid.NewCidV0(u.Hash([]byte("hello")))
numProvidersForHelloKey := 100 numProvidersForHelloKey := 100
for i := 0; i < numProvidersForHelloKey; i++ { for i := 0; i < numProvidersForHelloKey; i++ {
pi := testutil.RandIdentityOrFatal(t) pi := testutil.RandIdentityOrFatal(t)
...@@ -82,7 +83,7 @@ func TestClientOverMax(t *testing.T) { ...@@ -82,7 +83,7 @@ func TestClientOverMax(t *testing.T) {
// TODO does dht ensure won't receive self as a provider? probably not. // TODO does dht ensure won't receive self as a provider? probably not.
func TestCanceledContext(t *testing.T) { func TestCanceledContext(t *testing.T) {
rs := NewServer() rs := NewServer()
k := key.Key("hello") k := cid.NewCidV0(u.Hash([]byte("hello")))
// avoid leaking goroutine, without using the context to signal // avoid leaking goroutine, without using the context to signal
// (we want the goroutine to keep trying to publish on a // (we want the goroutine to keep trying to publish on a
...@@ -138,10 +139,11 @@ func TestCanceledContext(t *testing.T) { ...@@ -138,10 +139,11 @@ func TestCanceledContext(t *testing.T) {
} }
func TestValidAfter(t *testing.T) { func TestValidAfter(t *testing.T) {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
pi := testutil.RandIdentityOrFatal(t) pi := testutil.RandIdentityOrFatal(t)
var key = key.Key("mock key") key := cid.NewCidV0(u.Hash([]byte("mock key")))
var ctx = context.Background()
conf := DelayConfig{ conf := DelayConfig{
ValueVisibility: delay.Fixed(1 * time.Hour), ValueVisibility: delay.Fixed(1 * time.Hour),
Query: delay.Fixed(0), Query: delay.Fixed(0),
......
package mockrouting package mockrouting
import ( import (
context "context"
"github.com/ipfs/go-ipfs/thirdparty/testutil" "github.com/ipfs/go-ipfs/thirdparty/testutil"
dht "gx/ipfs/QmXVWh4XWRaRGdcGeFtBp3hx7H3mzYgVRpVN7LwtTaYv2E/go-libp2p-kad-dht" dht "gx/ipfs/QmRDMP3Y9E6hZtJwcFii8F6RTUSDn67Hi2o5VFTBXNRioo/go-libp2p-kad-dht"
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
mocknet "gx/ipfs/QmbiRCGZqhfcSjnm9icGz3oNQQdPLAnLWnKHXixaEWXVCN/go-libp2p/p2p/net/mock"
ds "gx/ipfs/QmbzuUusHqaLLoNTDEVLcSF6vZDHZDLPC7p4bztRvvkXxU/go-datastore" ds "gx/ipfs/QmbzuUusHqaLLoNTDEVLcSF6vZDHZDLPC7p4bztRvvkXxU/go-datastore"
sync "gx/ipfs/QmbzuUusHqaLLoNTDEVLcSF6vZDHZDLPC7p4bztRvvkXxU/go-datastore/sync" sync "gx/ipfs/QmbzuUusHqaLLoNTDEVLcSF6vZDHZDLPC7p4bztRvvkXxU/go-datastore/sync"
mocknet "gx/ipfs/QmcRa2qn6iCmap9bjp8jAwkvYAq13AUfxdY3rrYiaJbLum/go-libp2p/p2p/net/mock"
) )
type mocknetserver struct { type mocknetserver struct {
......
...@@ -5,15 +5,16 @@ ...@@ -5,15 +5,16 @@
package mockrouting package mockrouting
import ( import (
"context"
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/QmWXjJo15p4pzT7cayEwZi2sWgJqLnGDof6ZGMh9xBgU1p/go-libp2p-peer" routing "gx/ipfs/QmXKuGUzLcgoQvp8M6ZEJzupWUNmx8NoqXEbYLMDjL4rjj/go-libp2p-routing"
pstore "gx/ipfs/QmYkwVGkwoPbMVQEbf6LonZg4SsCxGP3H7PBEtdNCNRyxD/go-libp2p-peerstore" pstore "gx/ipfs/QmXXCcQ7CLg5a81Ui9TTR35QcR4y7ZyihxwfjqaHfUVcVo/go-libp2p-peerstore"
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context" cid "gx/ipfs/QmakyCk6Vnn16WEKjbkxieZmM2YLTzkFWizbmGowoYPjro/go-cid"
ds "gx/ipfs/QmbzuUusHqaLLoNTDEVLcSF6vZDHZDLPC7p4bztRvvkXxU/go-datastore" ds "gx/ipfs/QmbzuUusHqaLLoNTDEVLcSF6vZDHZDLPC7p4bztRvvkXxU/go-datastore"
key "gx/ipfs/Qmce4Y4zg3sYr7xKM5UueS67vhNni6EeWgCRnb7MbLJMew/go-key" peer "gx/ipfs/QmfMmLGoKzCHDN7cGgk64PJr4iipzidDRME8HABSJqvmhC/go-libp2p-peer"
routing "gx/ipfs/QmemZcG8WprPbnVX3AM43GhhSUiA3V6NjcTLAguvWzkdpQ/go-libp2p-routing"
) )
// Server provides mockrouting Clients // Server provides mockrouting Clients
...@@ -24,7 +25,7 @@ type Server interface { ...@@ -24,7 +25,7 @@ type Server interface {
// Client implements IpfsRouting // Client implements IpfsRouting
type Client interface { type Client interface {
FindProviders(context.Context, key.Key) ([]pstore.PeerInfo, error) FindProviders(context.Context, *cid.Cid) ([]pstore.PeerInfo, error)
routing.IpfsRouting routing.IpfsRouting
} }
...@@ -39,7 +40,7 @@ func NewServer() Server { ...@@ -39,7 +40,7 @@ func NewServer() Server {
// NewServerWithDelay returns a mockrouting Server with a delay! // NewServerWithDelay returns a mockrouting Server with a delay!
func NewServerWithDelay(conf DelayConfig) Server { func NewServerWithDelay(conf DelayConfig) Server {
return &s{ return &s{
providers: make(map[key.Key]map[peer.ID]providerRecord), providers: make(map[string]map[peer.ID]providerRecord),
delayConf: conf, delayConf: conf,
} }
} }
......
package nilrouting package nilrouting
import ( import (
"context"
"errors" "errors"
repo "github.com/ipfs/go-ipfs/repo" repo "github.com/ipfs/go-ipfs/repo"
logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log" logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log"
peer "gx/ipfs/QmWXjJo15p4pzT7cayEwZi2sWgJqLnGDof6ZGMh9xBgU1p/go-libp2p-peer" routing "gx/ipfs/QmXKuGUzLcgoQvp8M6ZEJzupWUNmx8NoqXEbYLMDjL4rjj/go-libp2p-routing"
pstore "gx/ipfs/QmYkwVGkwoPbMVQEbf6LonZg4SsCxGP3H7PBEtdNCNRyxD/go-libp2p-peerstore" pstore "gx/ipfs/QmXXCcQ7CLg5a81Ui9TTR35QcR4y7ZyihxwfjqaHfUVcVo/go-libp2p-peerstore"
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context" cid "gx/ipfs/QmakyCk6Vnn16WEKjbkxieZmM2YLTzkFWizbmGowoYPjro/go-cid"
p2phost "gx/ipfs/QmbiRCGZqhfcSjnm9icGz3oNQQdPLAnLWnKHXixaEWXVCN/go-libp2p/p2p/host" p2phost "gx/ipfs/QmdML3R42PRSwnt46jSuEts9bHSqLctVYEjJqMR3UYV8ki/go-libp2p-host"
key "gx/ipfs/Qmce4Y4zg3sYr7xKM5UueS67vhNni6EeWgCRnb7MbLJMew/go-key" peer "gx/ipfs/QmfMmLGoKzCHDN7cGgk64PJr4iipzidDRME8HABSJqvmhC/go-libp2p-peer"
routing "gx/ipfs/QmemZcG8WprPbnVX3AM43GhhSUiA3V6NjcTLAguvWzkdpQ/go-libp2p-routing"
) )
var log = logging.Logger("mockrouter") var log = logging.Logger("mockrouter")
...@@ -18,15 +19,15 @@ var log = logging.Logger("mockrouter") ...@@ -18,15 +19,15 @@ var log = logging.Logger("mockrouter")
type nilclient struct { type nilclient struct {
} }
func (c *nilclient) PutValue(_ context.Context, _ key.Key, _ []byte) error { func (c *nilclient) PutValue(_ context.Context, _ string, _ []byte) error {
return nil return nil
} }
func (c *nilclient) GetValue(_ context.Context, _ key.Key) ([]byte, error) { func (c *nilclient) GetValue(_ context.Context, _ string) ([]byte, error) {
return nil, errors.New("Tried GetValue from nil routing.") return nil, errors.New("Tried GetValue from nil routing.")
} }
func (c *nilclient) GetValues(_ context.Context, _ key.Key, _ int) ([]routing.RecvdVal, error) { func (c *nilclient) GetValues(_ context.Context, _ string, _ int) ([]routing.RecvdVal, error) {
return nil, errors.New("Tried GetValues from nil routing.") return nil, errors.New("Tried GetValues from nil routing.")
} }
...@@ -34,13 +35,13 @@ func (c *nilclient) FindPeer(_ context.Context, _ peer.ID) (pstore.PeerInfo, err ...@@ -34,13 +35,13 @@ func (c *nilclient) FindPeer(_ context.Context, _ peer.ID) (pstore.PeerInfo, err
return pstore.PeerInfo{}, nil return pstore.PeerInfo{}, nil
} }
func (c *nilclient) FindProvidersAsync(_ context.Context, _ key.Key, _ int) <-chan pstore.PeerInfo { func (c *nilclient) FindProvidersAsync(_ context.Context, _ *cid.Cid, _ int) <-chan pstore.PeerInfo {
out := make(chan pstore.PeerInfo) out := make(chan pstore.PeerInfo)
defer close(out) defer close(out)
return out return out
} }
func (c *nilclient) Provide(_ context.Context, _ key.Key) error { func (c *nilclient) Provide(_ context.Context, _ *cid.Cid) error {
return nil return nil
} }
......
package offline package offline
import ( import (
"context"
"errors" "errors"
"time" "time"
ds "gx/ipfs/QmbzuUusHqaLLoNTDEVLcSF6vZDHZDLPC7p4bztRvvkXxU/go-datastore" dshelp "github.com/ipfs/go-ipfs/thirdparty/ds-help"
key "gx/ipfs/Qmce4Y4zg3sYr7xKM5UueS67vhNni6EeWgCRnb7MbLJMew/go-key"
record "gx/ipfs/Qme7D9iKHYxwq28p6PzCymywsYSRBx9uyGzW7qNB3s9VbC/go-libp2p-record"
pb "gx/ipfs/Qme7D9iKHYxwq28p6PzCymywsYSRBx9uyGzW7qNB3s9VbC/go-libp2p-record/pb"
routing "gx/ipfs/QmemZcG8WprPbnVX3AM43GhhSUiA3V6NjcTLAguvWzkdpQ/go-libp2p-routing"
logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log" logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log"
ci "gx/ipfs/QmVoi5es8D5fNHZDqoW6DgDAEPEV5hQp8GBz161vZXiwpQ/go-libp2p-crypto" routing "gx/ipfs/QmXKuGUzLcgoQvp8M6ZEJzupWUNmx8NoqXEbYLMDjL4rjj/go-libp2p-routing"
"gx/ipfs/QmWXjJo15p4pzT7cayEwZi2sWgJqLnGDof6ZGMh9xBgU1p/go-libp2p-peer" pstore "gx/ipfs/QmXXCcQ7CLg5a81Ui9TTR35QcR4y7ZyihxwfjqaHfUVcVo/go-libp2p-peerstore"
pstore "gx/ipfs/QmYkwVGkwoPbMVQEbf6LonZg4SsCxGP3H7PBEtdNCNRyxD/go-libp2p-peerstore"
proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto" proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto"
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context" cid "gx/ipfs/QmakyCk6Vnn16WEKjbkxieZmM2YLTzkFWizbmGowoYPjro/go-cid"
ds "gx/ipfs/QmbzuUusHqaLLoNTDEVLcSF6vZDHZDLPC7p4bztRvvkXxU/go-datastore"
record "gx/ipfs/QmdM4ohF7cr4MvAECVeD3hRA3HtZrk1ngaek4n8ojVT87h/go-libp2p-record"
pb "gx/ipfs/QmdM4ohF7cr4MvAECVeD3hRA3HtZrk1ngaek4n8ojVT87h/go-libp2p-record/pb"
"gx/ipfs/QmfMmLGoKzCHDN7cGgk64PJr4iipzidDRME8HABSJqvmhC/go-libp2p-peer"
ci "gx/ipfs/QmfWDLQjGjVe4fr5CoztYW2DYYjRysMJrFe1RCsXLPTf46/go-libp2p-crypto"
) )
var log = logging.Logger("offlinerouting") var log = logging.Logger("offlinerouting")
...@@ -37,7 +38,7 @@ type offlineRouting struct { ...@@ -37,7 +38,7 @@ type offlineRouting struct {
sk ci.PrivKey sk ci.PrivKey
} }
func (c *offlineRouting) PutValue(ctx context.Context, key key.Key, val []byte) error { func (c *offlineRouting) PutValue(ctx context.Context, key string, val []byte) error {
rec, err := record.MakePutRecord(c.sk, key, val, false) rec, err := record.MakePutRecord(c.sk, key, val, false)
if err != nil { if err != nil {
return err return err
...@@ -47,11 +48,11 @@ func (c *offlineRouting) PutValue(ctx context.Context, key key.Key, val []byte) ...@@ -47,11 +48,11 @@ func (c *offlineRouting) PutValue(ctx context.Context, key key.Key, val []byte)
return err return err
} }
return c.datastore.Put(key.DsKey(), data) return c.datastore.Put(dshelp.NewKeyFromBinary(key), data)
} }
func (c *offlineRouting) GetValue(ctx context.Context, key key.Key) ([]byte, error) { func (c *offlineRouting) GetValue(ctx context.Context, key string) ([]byte, error) {
v, err := c.datastore.Get(key.DsKey()) v, err := c.datastore.Get(dshelp.NewKeyFromBinary(key))
if err != nil { if err != nil {
return nil, err return nil, err
} }
...@@ -69,8 +70,8 @@ func (c *offlineRouting) GetValue(ctx context.Context, key key.Key) ([]byte, err ...@@ -69,8 +70,8 @@ func (c *offlineRouting) GetValue(ctx context.Context, key key.Key) ([]byte, err
return rec.GetValue(), nil return rec.GetValue(), nil
} }
func (c *offlineRouting) GetValues(ctx context.Context, key key.Key, _ int) ([]routing.RecvdVal, error) { func (c *offlineRouting) GetValues(ctx context.Context, key string, _ int) ([]routing.RecvdVal, error) {
v, err := c.datastore.Get(key.DsKey()) v, err := c.datastore.Get(dshelp.NewKeyFromBinary(key))
if err != nil { if err != nil {
return nil, err return nil, err
} }
...@@ -90,7 +91,7 @@ func (c *offlineRouting) GetValues(ctx context.Context, key key.Key, _ int) ([]r ...@@ -90,7 +91,7 @@ func (c *offlineRouting) GetValues(ctx context.Context, key key.Key, _ int) ([]r
}, nil }, nil
} }
func (c *offlineRouting) FindProviders(ctx context.Context, key key.Key) ([]pstore.PeerInfo, error) { func (c *offlineRouting) FindProviders(ctx context.Context, key *cid.Cid) ([]pstore.PeerInfo, error) {
return nil, ErrOffline return nil, ErrOffline
} }
...@@ -98,13 +99,13 @@ func (c *offlineRouting) FindPeer(ctx context.Context, pid peer.ID) (pstore.Peer ...@@ -98,13 +99,13 @@ func (c *offlineRouting) FindPeer(ctx context.Context, pid peer.ID) (pstore.Peer
return pstore.PeerInfo{}, ErrOffline return pstore.PeerInfo{}, ErrOffline
} }
func (c *offlineRouting) FindProvidersAsync(ctx context.Context, k key.Key, max int) <-chan pstore.PeerInfo { func (c *offlineRouting) FindProvidersAsync(ctx context.Context, k *cid.Cid, max int) <-chan pstore.PeerInfo {
out := make(chan pstore.PeerInfo) out := make(chan pstore.PeerInfo)
close(out) close(out)
return out return out
} }
func (c *offlineRouting) Provide(_ context.Context, key key.Key) error { func (c *offlineRouting) Provide(_ context.Context, k *cid.Cid) error {
return ErrOffline return ErrOffline
} }
......
...@@ -2,22 +2,22 @@ package supernode ...@@ -2,22 +2,22 @@ package supernode
import ( import (
"bytes" "bytes"
"context"
"errors" "errors"
"time" "time"
proxy "github.com/ipfs/go-ipfs/routing/supernode/proxy" proxy "github.com/ipfs/go-ipfs/routing/supernode/proxy"
dhtpb "gx/ipfs/QmRDMP3Y9E6hZtJwcFii8F6RTUSDn67Hi2o5VFTBXNRioo/go-libp2p-kad-dht/pb"
logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log" logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log"
peer "gx/ipfs/QmWXjJo15p4pzT7cayEwZi2sWgJqLnGDof6ZGMh9xBgU1p/go-libp2p-peer" loggables "gx/ipfs/QmTMy4hVSY28DdwJ9kBz6y7q6MuioFzPcpM3Ma3aPjo1i3/go-libp2p-loggables"
dhtpb "gx/ipfs/QmXVWh4XWRaRGdcGeFtBp3hx7H3mzYgVRpVN7LwtTaYv2E/go-libp2p-kad-dht/pb" routing "gx/ipfs/QmXKuGUzLcgoQvp8M6ZEJzupWUNmx8NoqXEbYLMDjL4rjj/go-libp2p-routing"
pstore "gx/ipfs/QmYkwVGkwoPbMVQEbf6LonZg4SsCxGP3H7PBEtdNCNRyxD/go-libp2p-peerstore" pstore "gx/ipfs/QmXXCcQ7CLg5a81Ui9TTR35QcR4y7ZyihxwfjqaHfUVcVo/go-libp2p-peerstore"
loggables "gx/ipfs/QmYrv4LgCC8FhG2Ab4bwuq5DqBdwMtx3hMb3KKJDZcr2d7/go-libp2p-loggables"
proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto" proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto"
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context" cid "gx/ipfs/QmakyCk6Vnn16WEKjbkxieZmM2YLTzkFWizbmGowoYPjro/go-cid"
"gx/ipfs/QmbiRCGZqhfcSjnm9icGz3oNQQdPLAnLWnKHXixaEWXVCN/go-libp2p/p2p/host" pb "gx/ipfs/QmdM4ohF7cr4MvAECVeD3hRA3HtZrk1ngaek4n8ojVT87h/go-libp2p-record/pb"
key "gx/ipfs/Qmce4Y4zg3sYr7xKM5UueS67vhNni6EeWgCRnb7MbLJMew/go-key" "gx/ipfs/QmdML3R42PRSwnt46jSuEts9bHSqLctVYEjJqMR3UYV8ki/go-libp2p-host"
pb "gx/ipfs/Qme7D9iKHYxwq28p6PzCymywsYSRBx9uyGzW7qNB3s9VbC/go-libp2p-record/pb" peer "gx/ipfs/QmfMmLGoKzCHDN7cGgk64PJr4iipzidDRME8HABSJqvmhC/go-libp2p-peer"
routing "gx/ipfs/QmemZcG8WprPbnVX3AM43GhhSUiA3V6NjcTLAguvWzkdpQ/go-libp2p-routing"
) )
var log = logging.Logger("supernode") var log = logging.Logger("supernode")
...@@ -39,13 +39,13 @@ func NewClient(px proxy.Proxy, h host.Host, ps pstore.Peerstore, local peer.ID) ...@@ -39,13 +39,13 @@ func NewClient(px proxy.Proxy, h host.Host, ps pstore.Peerstore, local peer.ID)
}, nil }, nil
} }
func (c *Client) FindProvidersAsync(ctx context.Context, k key.Key, max int) <-chan pstore.PeerInfo { func (c *Client) FindProvidersAsync(ctx context.Context, k *cid.Cid, 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 pstore.PeerInfo) ch := make(chan pstore.PeerInfo)
go func() { go func() {
defer close(ch) defer close(ch)
request := dhtpb.NewMessage(dhtpb.Message_GET_PROVIDERS, string(k), 0) request := dhtpb.NewMessage(dhtpb.Message_GET_PROVIDERS, k.KeyString(), 0)
response, err := c.proxy.SendRequest(ctx, request) response, err := c.proxy.SendRequest(ctx, request)
if err != nil { if err != nil {
log.Debug(err) log.Debug(err)
...@@ -63,8 +63,8 @@ func (c *Client) FindProvidersAsync(ctx context.Context, k key.Key, max int) <-c ...@@ -63,8 +63,8 @@ func (c *Client) FindProvidersAsync(ctx context.Context, k key.Key, max int) <-c
return ch return ch
} }
func (c *Client) PutValue(ctx context.Context, k key.Key, v []byte) error { func (c *Client) PutValue(ctx context.Context, k string, v []byte) error {
defer log.EventBegin(ctx, "putValue", &k).Done() defer log.EventBegin(ctx, "putValue").Done()
r, err := makeRecord(c.peerstore, c.local, k, v) r, err := makeRecord(c.peerstore, c.local, k, v)
if err != nil { if err != nil {
return err return err
...@@ -74,8 +74,8 @@ func (c *Client) PutValue(ctx context.Context, k key.Key, v []byte) error { ...@@ -74,8 +74,8 @@ func (c *Client) PutValue(ctx context.Context, k key.Key, v []byte) error {
return c.proxy.SendMessage(ctx, pmes) // wrap to hide the remote return c.proxy.SendMessage(ctx, pmes) // wrap to hide the remote
} }
func (c *Client) GetValue(ctx context.Context, k key.Key) ([]byte, error) { func (c *Client) GetValue(ctx context.Context, k string) ([]byte, error) {
defer log.EventBegin(ctx, "getValue", &k).Done() defer log.EventBegin(ctx, "getValue").Done()
msg := dhtpb.NewMessage(dhtpb.Message_GET_VALUE, string(k), 0) msg := dhtpb.NewMessage(dhtpb.Message_GET_VALUE, string(k), 0)
response, err := c.proxy.SendRequest(ctx, msg) // TODO wrap to hide the remote response, err := c.proxy.SendRequest(ctx, msg) // TODO wrap to hide the remote
if err != nil { if err != nil {
...@@ -84,8 +84,8 @@ func (c *Client) GetValue(ctx context.Context, k key.Key) ([]byte, error) { ...@@ -84,8 +84,8 @@ func (c *Client) GetValue(ctx context.Context, k key.Key) ([]byte, error) {
return response.Record.GetValue(), nil return response.Record.GetValue(), nil
} }
func (c *Client) GetValues(ctx context.Context, k key.Key, _ int) ([]routing.RecvdVal, error) { func (c *Client) GetValues(ctx context.Context, k string, _ int) ([]routing.RecvdVal, error) {
defer log.EventBegin(ctx, "getValue", &k).Done() defer log.EventBegin(ctx, "getValue").Done()
msg := dhtpb.NewMessage(dhtpb.Message_GET_VALUE, string(k), 0) msg := dhtpb.NewMessage(dhtpb.Message_GET_VALUE, string(k), 0)
response, err := c.proxy.SendRequest(ctx, msg) // TODO wrap to hide the remote response, err := c.proxy.SendRequest(ctx, msg) // TODO wrap to hide the remote
if err != nil { if err != nil {
...@@ -100,9 +100,9 @@ func (c *Client) GetValues(ctx context.Context, k key.Key, _ int) ([]routing.Rec ...@@ -100,9 +100,9 @@ func (c *Client) GetValues(ctx context.Context, k key.Key, _ int) ([]routing.Rec
}, nil }, nil
} }
func (c *Client) Provide(ctx context.Context, k key.Key) error { func (c *Client) Provide(ctx context.Context, k *cid.Cid) error {
defer log.EventBegin(ctx, "provide", &k).Done() defer log.EventBegin(ctx, "provide", k).Done()
msg := dhtpb.NewMessage(dhtpb.Message_ADD_PROVIDER, string(k), 0) msg := dhtpb.NewMessage(dhtpb.Message_ADD_PROVIDER, k.KeyString(), 0)
// FIXME how is connectedness defined for the local node // FIXME how is connectedness defined for the local node
pri := []dhtpb.PeerRoutingInfo{ pri := []dhtpb.PeerRoutingInfo{
{ {
...@@ -132,7 +132,7 @@ func (c *Client) FindPeer(ctx context.Context, id peer.ID) (pstore.PeerInfo, err ...@@ -132,7 +132,7 @@ func (c *Client) FindPeer(ctx context.Context, id peer.ID) (pstore.PeerInfo, err
} }
// 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 pstore.Peerstore, p peer.ID, k key.Key, v []byte) (*pb.Record, error) { func makeRecord(ps pstore.Peerstore, p peer.ID, k string, 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 {
......
package proxy package proxy
import ( import (
peer "gx/ipfs/QmWXjJo15p4pzT7cayEwZi2sWgJqLnGDof6ZGMh9xBgU1p/go-libp2p-peer" context "context"
dhtpb "gx/ipfs/QmXVWh4XWRaRGdcGeFtBp3hx7H3mzYgVRpVN7LwtTaYv2E/go-libp2p-kad-dht/pb" dhtpb "gx/ipfs/QmRDMP3Y9E6hZtJwcFii8F6RTUSDn67Hi2o5VFTBXNRioo/go-libp2p-kad-dht/pb"
ggio "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/io" ggio "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/io"
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context" inet "gx/ipfs/QmdXimY9QHaasZmw6hWojWnCJvfgxETjZQfg9g6ZrA9wMX/go-libp2p-net"
inet "gx/ipfs/QmbiRCGZqhfcSjnm9icGz3oNQQdPLAnLWnKHXixaEWXVCN/go-libp2p/p2p/net" peer "gx/ipfs/QmfMmLGoKzCHDN7cGgk64PJr4iipzidDRME8HABSJqvmhC/go-libp2p-peer"
) )
// RequestHandler handles routing requests locally // RequestHandler handles routing requests locally
......
package proxy package proxy
import ( import (
"context"
"errors" "errors"
ggio "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/io" dhtpb "gx/ipfs/QmRDMP3Y9E6hZtJwcFii8F6RTUSDn67Hi2o5VFTBXNRioo/go-libp2p-kad-dht/pb"
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log" logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log"
peer "gx/ipfs/QmWXjJo15p4pzT7cayEwZi2sWgJqLnGDof6ZGMh9xBgU1p/go-libp2p-peer" loggables "gx/ipfs/QmTMy4hVSY28DdwJ9kBz6y7q6MuioFzPcpM3Ma3aPjo1i3/go-libp2p-loggables"
pstore "gx/ipfs/QmYkwVGkwoPbMVQEbf6LonZg4SsCxGP3H7PBEtdNCNRyxD/go-libp2p-peerstore" kbucket "gx/ipfs/QmUKePKcUEXwdvJENZJ6z8mJjPaxLsDZ3V9CZjPPtyawPm/go-libp2p-kbucket"
host "gx/ipfs/QmbiRCGZqhfcSjnm9icGz3oNQQdPLAnLWnKHXixaEWXVCN/go-libp2p/p2p/host" pstore "gx/ipfs/QmXXCcQ7CLg5a81Ui9TTR35QcR4y7ZyihxwfjqaHfUVcVo/go-libp2p-peerstore"
inet "gx/ipfs/QmbiRCGZqhfcSjnm9icGz3oNQQdPLAnLWnKHXixaEWXVCN/go-libp2p/p2p/net" ggio "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/io"
host "gx/ipfs/QmdML3R42PRSwnt46jSuEts9bHSqLctVYEjJqMR3UYV8ki/go-libp2p-host"
key "gx/ipfs/Qmce4Y4zg3sYr7xKM5UueS67vhNni6EeWgCRnb7MbLJMew/go-key" inet "gx/ipfs/QmdXimY9QHaasZmw6hWojWnCJvfgxETjZQfg9g6ZrA9wMX/go-libp2p-net"
peer "gx/ipfs/QmfMmLGoKzCHDN7cGgk64PJr4iipzidDRME8HABSJqvmhC/go-libp2p-peer"
kbucket "gx/ipfs/QmVsCNFD32GzZ6Q5XD1TVGPRviNYqDdoNvgq853TU9hhzP/go-libp2p-kbucket"
dhtpb "gx/ipfs/QmXVWh4XWRaRGdcGeFtBp3hx7H3mzYgVRpVN7LwtTaYv2E/go-libp2p-kad-dht/pb"
loggables "gx/ipfs/QmYrv4LgCC8FhG2Ab4bwuq5DqBdwMtx3hMb3KKJDZcr2d7/go-libp2p-loggables"
) )
const ProtocolSNR = "/ipfs/supernoderouting" const ProtocolSNR = "/ipfs/supernoderouting"
...@@ -167,6 +163,6 @@ func (px *standard) sendRequest(ctx context.Context, m *dhtpb.Message, remote pe ...@@ -167,6 +163,6 @@ func (px *standard) sendRequest(ctx context.Context, m *dhtpb.Message, remote pe
} }
func sortedByKey(peers []peer.ID, skey string) []peer.ID { func sortedByKey(peers []peer.ID, skey string) []peer.ID {
target := kbucket.ConvertKey(key.Key(skey)) target := kbucket.ConvertKey(skey)
return kbucket.SortClosestPeers(peers, target) return kbucket.SortClosestPeers(peers, target)
} }
...@@ -6,15 +6,15 @@ import ( ...@@ -6,15 +6,15 @@ import (
proxy "github.com/ipfs/go-ipfs/routing/supernode/proxy" proxy "github.com/ipfs/go-ipfs/routing/supernode/proxy"
peer "gx/ipfs/QmWXjJo15p4pzT7cayEwZi2sWgJqLnGDof6ZGMh9xBgU1p/go-libp2p-peer" context "context"
dhtpb "gx/ipfs/QmXVWh4XWRaRGdcGeFtBp3hx7H3mzYgVRpVN7LwtTaYv2E/go-libp2p-kad-dht/pb" dhtpb "gx/ipfs/QmRDMP3Y9E6hZtJwcFii8F6RTUSDn67Hi2o5VFTBXNRioo/go-libp2p-kad-dht/pb"
pstore "gx/ipfs/QmYkwVGkwoPbMVQEbf6LonZg4SsCxGP3H7PBEtdNCNRyxD/go-libp2p-peerstore" pstore "gx/ipfs/QmXXCcQ7CLg5a81Ui9TTR35QcR4y7ZyihxwfjqaHfUVcVo/go-libp2p-peerstore"
key "gx/ipfs/QmYEoKZXHoAToWfhGF3vryhMn3WWhE1o2MasQ8uzY5iDi9/go-key"
proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto" proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto"
context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
datastore "gx/ipfs/QmbzuUusHqaLLoNTDEVLcSF6vZDHZDLPC7p4bztRvvkXxU/go-datastore" datastore "gx/ipfs/QmbzuUusHqaLLoNTDEVLcSF6vZDHZDLPC7p4bztRvvkXxU/go-datastore"
key "gx/ipfs/Qmce4Y4zg3sYr7xKM5UueS67vhNni6EeWgCRnb7MbLJMew/go-key" record "gx/ipfs/QmdM4ohF7cr4MvAECVeD3hRA3HtZrk1ngaek4n8ojVT87h/go-libp2p-record"
record "gx/ipfs/Qme7D9iKHYxwq28p6PzCymywsYSRBx9uyGzW7qNB3s9VbC/go-libp2p-record" pb "gx/ipfs/QmdM4ohF7cr4MvAECVeD3hRA3HtZrk1ngaek4n8ojVT87h/go-libp2p-record/pb"
pb "gx/ipfs/Qme7D9iKHYxwq28p6PzCymywsYSRBx9uyGzW7qNB3s9VbC/go-libp2p-record/pb" peer "gx/ipfs/QmfMmLGoKzCHDN7cGgk64PJr4iipzidDRME8HABSJqvmhC/go-libp2p-peer"
) )
// Server handles routing queries using a database backend // Server handles routing queries using a database backend
......
...@@ -3,9 +3,9 @@ package supernode ...@@ -3,9 +3,9 @@ package supernode
import ( import (
"testing" "testing"
dhtpb "gx/ipfs/QmXVWh4XWRaRGdcGeFtBp3hx7H3mzYgVRpVN7LwtTaYv2E/go-libp2p-kad-dht/pb" dhtpb "gx/ipfs/QmRDMP3Y9E6hZtJwcFii8F6RTUSDn67Hi2o5VFTBXNRioo/go-libp2p-kad-dht/pb"
key "gx/ipfs/QmYEoKZXHoAToWfhGF3vryhMn3WWhE1o2MasQ8uzY5iDi9/go-key"
datastore "gx/ipfs/QmbzuUusHqaLLoNTDEVLcSF6vZDHZDLPC7p4bztRvvkXxU/go-datastore" datastore "gx/ipfs/QmbzuUusHqaLLoNTDEVLcSF6vZDHZDLPC7p4bztRvvkXxU/go-datastore"
key "gx/ipfs/Qmce4Y4zg3sYr7xKM5UueS67vhNni6EeWgCRnb7MbLJMew/go-key"
) )
func TestPutProviderDoesntResultInDuplicates(t *testing.T) { func TestPutProviderDoesntResultInDuplicates(t *testing.T) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment