c598ed034d
We realized that the Kademlia FindNear() function was 1. not using XOR distance (AKA _totally broken_) 2. largely a duplicate of the RoutingTable FindNear() function Changes in this PR: 1. upgraded RoutingTable FindNear() to use iterator and restrictions 2. removed unneeded RoutingTable interface 3. made Kademlia wrap methods that were previously accessed via RoutingTable 4. fixed the tests
30 lines
744 B
Go
30 lines
744 B
Go
// Copyright (C) 2019 Storj Labs, Inc.
|
|
// See LICENSE for copying information.
|
|
|
|
package dht
|
|
|
|
import (
|
|
"context"
|
|
|
|
"storj.io/storj/pkg/pb"
|
|
"storj.io/storj/pkg/storj"
|
|
)
|
|
|
|
// DHT is the interface for the DHT in the Storj network
|
|
type DHT interface {
|
|
FindNear(ctx context.Context, start storj.NodeID, limit int, restrictions ...pb.Restriction) ([]*pb.Node, error)
|
|
Bootstrap(ctx context.Context) error
|
|
Ping(ctx context.Context, node pb.Node) (pb.Node, error)
|
|
FindNode(ctx context.Context, ID storj.NodeID) (pb.Node, error)
|
|
Seen() []*pb.Node
|
|
}
|
|
|
|
// Bucket is a set of methods to act on kademlia k buckets
|
|
type Bucket interface {
|
|
Routing() []pb.Node
|
|
Cache() []pb.Node
|
|
// TODO: should this be a NodeID?
|
|
Midpoint() string
|
|
Nodes() []*pb.Node
|
|
}
|